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
文件
只需要创建一个并将/// <reference path="..." />
放入导入socket.io的ts文件中。将d.ts文件的相对路径放在那里。
你误会了。您需要将/// <reference path="../path/to/typings.d.ts" />
放入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'