在 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