Global не определен в ../node_modules/socket.io-parser/is-buffer.js

заранее спасибо за помощь. Я пытаюсь подключить сокет в одном из моих компонентов angular, но в консоли браузера выдается сообщение об ошибке, в котором говорится, что global не определен в Object ../node_modules/socket.io-parser/is-buffer.js

Это мой дом. Component.ts

import { Component, OnInit } from '@angular/core';
import * as $ from 'jquery';
import * as io from 'socket.io-client';

@Component({
  selector: 'app-home',
  templateUrl: './home.component.html',
  styleUrls: ['./home.component.css']
})
export class HomeComponent implements OnInit {

  constructor() { }

  ngOnInit() {
  }

}


var socket = io();

Если вынуть socket.io-client и socket = io (); веб-сайт в порядке, но когда я его включаю, он вылетает.

Это мой файл package.json

  "dependencies": {
    "@angular/animations": "^6.0.0",
    "@angular/common": "^6.0.0",
    "@angular/compiler": "^6.0.0",
    "@angular/core": "^6.0.0",
    "@angular/forms": "^6.0.0",
    "@angular/http": "^6.0.0",
    "@angular/platform-browser": "^6.0.0",
    "@angular/platform-browser-dynamic": "^6.0.0",
    "@angular/router": "^6.0.0",
    "@types/jquery": "^3.3.1",
    "@types/socket.io": "^1.4.33",
    "body-parser": "^1.18.3",
    "bootstrap": "^4.1.1",
    "core-js": "^2.5.4",
    "express": "^4.16.3",
    "jquery": "^3.3.1",
    "moment": "^2.22.1",
    "mongodb": "^3.1.0-beta4",
    "ng4-twitter-timeline": "^1.0.8",
    "popper.js": "^1.14.3",
    "rxjs": "^6.0.0",
    "socket.io": "^2.1.0",
    "socket.io-client": "^2.1.0",
    "zone.js": "^0.8.26"
  }

Сначала я попробовал использовать только socket.io, который не сработал. Затем я начал искать аналогичную проблему. Ничего не нашел.

Моя конечная цель - использовать сокет для извлечения данных из форм и хранения в базе данных. Любая помощь приветствуется.

ОБНОВЛЕНИЕ (ВОЗМОЖНОЕ РЕШЕНИЕ): 17.05.2018 Вы должны использовать:

(window as any) = window 

в polyfill.ts это решило проблему для меня.

ОБНОВЛЕНИЕ (ВОЗМОЖНОЕ РЕШЕНИЕ №2): 29.05.2018

(window as any).global = window

как вы нашли решение это, кстати, отлично работает, добавьте его в качестве ответа

Ulrich Dohou 26.07.2018 18:18

Возможный дубликат Обновление до angular-6.x дает "Uncaught ReferenceError: global is not defined"

Ulrich Dohou 26.07.2018 18:24
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
14
2
5 754
3

Ответы 3

(window as any).global = window

Как уже упоминалось в комментарии, добавьте приведенный выше код в файл polyfills.ts.

В src / index.html в голове добавить

<script>
    var global = global || window;
</script>

Чтобы решить эту проблему, вам нужно открыть файл your_angular_setup/src/polyfills.ts, а затем добавить строку ниже в конец файла.

    (window as any).global = window

и вы увидите, что ваша проблема исправлена.

Другие вопросы по теме