在 Angular 2 应用程序中导入 socket.io-client 时出错 [重复]

Posted

技术标签:

【中文标题】在 Angular 2 应用程序中导入 socket.io-client 时出错 [重复]【英文标题】:Errors when importing socket.io-client in Angular 2 app [duplicate] 【发布时间】:2016-12-12 13:46:35 【问题描述】:

我正在尝试在我的 Angular 2 应用程序中使用 socket.io 客户端并安装它并输入

我只是从 'socket.io-client' 导入;

但不知何故,我从中得到了大量错误:

如果我从 cdn 加载脚本并将初始化代码放在 <script> 标记中,我可以在我的 index.html 中使用 lib,但我不能在我的实际 angular 2 应用程序中使用它。

我在这里做错了什么?

这是我的样板:https://github.com/mgechev/angular2-seed

socket.io 的示例似乎已经过时,这就是我避免使用它们的原因。

这就是我正在做的所有事情,并且已经收到了这些错误:

import * as io from 'socket.io-client';
[...]
var socket = io('127.0.0.1');

所以这个问题在某种程度上似乎与 SystemJS 有关。 这个https://github.com/mgechev/angular2-seed/wiki/Add-external-dependency 建议我可以添加socket.io-client,它应该会自动添加所有依赖项,但情况似乎并非如此。

我已经尝试了完整的示例,但这也不起作用。

【问题讨论】:

在我看来,您应该使用专为浏览器设计的 socket.io.js。 我正在使用socket.io-client,它被推荐用于多个地方的angular 2 输入一些代码来说明您如何尝试导入它? @Ajey 添加了更多代码 更好,把你的代码放在 github repo 上,然后给我链接。这容易多了:) 【参考方案1】:

我在我的 Angular 2 应用程序中使用 socket.io 客户端,并且没有任何问题。首先你不应该把script标签放到你的index.hml中的socket.io-client。其次,您在 system.js 配置中需要这些行:


  packages: 
      "socket.io-client": "defaultExtension": "js"
  ,

  map: 
    "socket.io-client": "node_modules/socket.io-client/socket.io.js"
  

然后你只需使用它:

import * as io from "socket.io-client";
io.connect(url,  /* ... */ );

【讨论】:

我之前尝试过类似的方法,但我只是不确定如何让它发挥作用。这是我来自种子项目 (github.com/gempir/spamchamp/blob/master/tools/config/…) 的配置文件,我尝试在几个建议的位置添加,但没有奏效。 只需将这些行添加到 package 和 map 部分,你就会得到它的工作 我做到了,但我仍然遇到同样的问题:/ 看起来您已将其添加到:seed.config.ts 中的 SYSTEM_CONFIG_DEV(来自我在上面的 cmets 中看到的 github 存储库),看起来您可能也需要在此处添加它:SYSTEM_BUILDER_CONFIG .【参考方案2】:

基于question 中提到的this 你应该使用npm install @types/socket.io-client --save

【讨论】:

这个问题在 4 个月前得到了更好的回答。

以上是关于在 Angular 2 应用程序中导入 socket.io-client 时出错 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Angular 2 应用程序中导入 socket.io-client?

使用 System.js 在 Angular 2 应用程序中导入 visionmedia 调试以及如何记录消息?

在 Angular 2 应用程序中导入 socket.io-client 时出错 [重复]

不再能够在 Angular 4.2.3 中导入 BrowserAnimationsModule

在 Angular 项目中导入 2 个同名的 JavaScript 函数

如何在 angular2-webpack 中导入“stompjs/lib/stomp.min”