找不到模块“模块名称”的声明文件。 '/path/to/module-name.js' 隐含一个 'any' 类型

新手上路,请多包涵

我阅读了 TypeScript 模块解析 的工作原理。

我有以下存储库: @ts-stack/di 。编译后的目录结构如下:

 ├── dist
│   ├── annotations.d.ts
│   ├── annotations.js
│   ├── index.d.ts
│   ├── index.js
│   ├── injector.d.ts
│   ├── injector.js
│   ├── profiler.d.ts
│   ├── profiler.js
│   ├── providers.d.ts
│   ├── providers.js
│   ├── util.d.ts
│   └── util.js
├── LICENSE
├── package.json
├── README.md
├── src
│   ├── annotations.ts
│   ├── index.ts
│   ├── injector.ts
│   ├── profiler.ts
│   ├── providers.ts
│   └── util.ts
└── tsconfig.json

在我的 package.json 中,我写了 "main": "dist/index.js"

在 Node.js 中一切正常,但 TypeScript:

 import {Injector} from '@ts-stack/di';

找不到模块“@ts-stack/di”的声明文件。 ‘/path/to/node_modules/@ts-stack/di/dist/index.js’ 隐含地具有 ‘any’ 类型。

然而,如果我按如下方式导入,那么一切正常:

 import {Injector} from '/path/to/node_modules/@ts-stack/di/dist/index.js';

我究竟做错了什么?

原文由 ktretyak 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.5k
2 个回答

对于您正在安装自己的 npm 包的情况

如果您使用的是第三方软件包,请参阅 下面的答案

.js "main": "dist/index.js" 中删除 --- package.json

 "main": "dist/index",

还要 根据 TypeScript 文档在 package.json --- 中添加 typings

 "main": "dist/index",
"typings": "dist/index",

文件夹 dist 是 TS 编译器存储模块文件的地方。

原文由 ktretyak 发布,翻译遵循 CC BY-SA 4.0 许可协议

在大多数情况下,您可能会为您的依赖项安装一个类型包,无论哪种方式,您都可以在 tsconfig.json 文件中添加 allowJs -> true

原文由 Gabriel soft 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进