Angular 2:错误 TS2307:找不到模块“socket.io-client”

Posted

技术标签:

【中文标题】Angular 2:错误 TS2307:找不到模块“socket.io-client”【英文标题】:Angular 2: error TS2307: Cannot find module 'socket.io-client' 【发布时间】:2017-01-06 16:38:46 【问题描述】:

安装模块后socket.io

npm install socket.io --save

我有以下错误:

错误 TS2307:找不到模块“socket.io-client”

导入

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

systemjs.config.js

var map = 
    'socket.io-client': 'node_modules/socket.io-client/socket.io.js'


var packages = 
    'socket.io-client':  main: 'socket.io', format: 'cjs', defaultExtension: 'js' 

package.json

"dependencies": 
    "socket.io": "^1.4.8"

typings.d.ts

/// <reference path="../socket.io-client/socket.io.js" />

declare module 'socket.io-client' 
  var e: any;
  export = e;

socket.io-client(目录) -socket.io.js -typings.d.ts

Angular 2 RC5

【问题讨论】:

我运行了npm install socket.io --save,并在我的文件中://@ts-ignore(忽略仅视觉错误 - 必须对 express tbh 执行相同操作)和import io from 'socket.io';。完美运行。 【参考方案1】:

2021 年更新

@nullromo 指出,socket.io-client 包现在内置了类型。不再需要单独安装类型

2018 年更新

要在浏览器中正确使用 socket.io,您需要安装 socket.io 客户端包及其类型:

npm i socket.io-client @types/socket.io-client 

过时:

您缺少输入。 打开typings.d.ts并添加

declare module 'socket.io-client' 
  var e: any;
  export = e;

您也可以尝试通过npm i @types/socket.io-client 为 socket.io 安装类型。不过,我不知道是否有可用的类型。

【讨论】:

即使我使用npm i @types/socket.io-client,我也没有typings.d.ts 文件 只需要创建一个并将/// &lt;reference path="..." /&gt;放入导入socket.io的ts文件中。将d.ts文件的相对路径放在那里。 你误会了。您需要将/// &lt;reference path="../path/to/typings.d.ts" /&gt; 放入import * as io from 'socket.io-client'; 上方的.ts 文件中 对不起 - npm i @types/socket.io-client 没有解决它 Typings 已添加到 socket-io.client 包中,因此不再需要安装 @types 包。【参考方案2】:

确保安装带有 socket.io 类型定义的正确包:

npm install @types/socket.io-client --save

这将包括正确文件夹中的类型,这意味着您不需要在任何其他文件中进行进一步操作,因为 angular 会选择它。

【讨论】:

【参考方案3】:

我通过在我的 app.components.ts 顶部添加这个来解决它

  /// <reference path="../../typings/globals/socket.io-client/index.d.ts" /> 

【讨论】:

以上是关于Angular 2:错误 TS2307:找不到模块“socket.io-client”的主要内容,如果未能解决你的问题,请参考以下文章

TypeScript + moment.js:错误 TS2307:找不到模块'moment'

TS2307 构建:找不到模块“lodash”

Nativescript ::错误TS2307:找不到模块'image-asset'

打字稿导入文本文件“错误 TS2307:找不到模块”

错误 TS2307:找不到模块“fs”或其相应的类型声明

错误TS2307:找不到模块(但在运行js时可以)