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

标签 javascript angular socket.io

我想在我的 Angular 2 应用程序中包含 sockets.io-client。首先我安装了 socket.io-client,安装了 typings:

npm install socket.io-client --save
typings install socket.io-client --save --ambient

下一步是将 socket.io-client 包含到我的 index.html 中:

 <script src="node_modules/socket.io-client/socket.io.js"></script>

在我的组件中,我正在导入 sockets.io:

import * as io from 'socket.io-client'

然后使用它:

var socket = io('http://localhost:3000');
socket.on('event', function(data:any){
   console.log(data);
}.bind(this)); 

这失败了:

zone.js:101 GET http://localhost:3001/socket.io-client 404 (Not Found)
(index):18 Error: Error: XHR error (404 Not Found) loading http://localhost:3001/socket.io-client

有什么想法吗?

最佳答案

为了注册模块以便导入它,您需要将它包含在您的 SystemJS 配置中。

System.config({
    packages: {
        ...
        "socket.io-client": {"defaultExtension": "js"}
    },
    map: {
        "socket.io-client": "node_modules/socket.io-client/socket.io.js"
    }
});

并将您的导入更改为:

从'socket.io-client'导入io;
import * as io from "socket.io-client

此外,您不再需要在脚本标签中导入,因此删除:

<script src="node_modules/socket.io-client/socket.io.js"></script>

最后,如果您想添加类型,请在您的 typings.json 中添加:

{
  "ambientDependencies": {
    ...
    "socket-io-client":"github:DefinitelyTyped/DefinitelyTyped/socket.io-client/socket.io-client.d.ts#7de6c3dd94feaeb21f20054b9f30d5dabc5efabd"
  }
}

附言将来,将类型中的哈希更改为最新的提交哈希。

关于javascript - 如何在 Angular 2 应用程序中导入 socket.io-client?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37090031/

相关文章:

javascript - 组合多个元素的 jQuery 事件监听器

javascript - 在新页面中加载非特定点击图像

javascript - 旋转 div 时获取 CSS 左侧和顶部

javascript - Angular 2 : Problems with imports not finding modules

design-patterns - Redis、node.js 和 Javascript 回调范围/流程

javascript - 在javascript中删除数组中的特定元素

javascript - 如何通过socket io发送对象数组?

node.js - 测试 socket.io 事件

angular - RXJS 运算符(operator)不使用 firebase