web-dev-qa-db-fra.com

Global n'est pas défini dans ../node_modules/socket.io-parser/is-buffer.js

merci d'avance de m'avoir aidé. J'essaie de connecter le socket dans l'un de mes composants angular, mais dans la console du navigateur, il génère une erreur indiquant que global n'est pas défini dans Object ../node_modules/socket.io -parser/is-buffer.js

Ceci est mon home.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();

Si je retire le socket.io-client et socket = io (); le site Web est bien mais quand je l'inclus, il plante.

Ceci est mon fichier 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"
  }

J'ai d'abord essayé avec juste 'socket.io' qui ne fonctionnait pas. J'ai alors commencé à rechercher un problème similaire. Je n'ai rien trouvé.

Mon objectif final est d'utiliser socket pour prendre des données à partir de formulaires et les stocker dans une base de données. Toute aide serait très appréciée.

MISE À JOUR (SOLUTION POSSIBLE): 17/05/2018 Vous devez utiliser:

(window as any) = window 

dans polyfill.ts, cela a résolu le problème pour moi.

MISE À JOUR (SOLUTION POSSIBLE # 2): 29/05/2018

(window as any).global = window
14
Dre Jackson
(window as any).global = window

Comme déjà mentionné dans le commentaire, ajoutez le code ci-dessus dans le polyfills.ts fichier.

12
Richang Sharma

Dans src/index.html dans la tête, ajoutez

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

Pour résoudre ce problème, vous devez ouvrir le fichier your_angular_setup/src/polyfills.ts puis ajoutez la ligne ci-dessous en bas du fichier.

    (window as any).global = window

et vous verrez que votre problème est résolu.

1
Prashant Barve