我自己的 TypeScript 模块的“找不到模块”
Posted
技术标签:
【中文标题】我自己的 TypeScript 模块的“找不到模块”【英文标题】:`Cannot find module` for my own TypeScript module 【发布时间】:2019-07-08 19:17:32 【问题描述】:我刚刚向 NPM 注册表ooafs 发布了一个新的基于 TypeScript 的模块。但是,当我尝试安装它并将其导入另一个 TypeScript 项目时,VSCode 在导入语句中给出以下错误:Cannot find module 'ooafs'.ts(2307)
。
这个模块的源文件被编译成 javascript 到一个dist/
文件夹并且定义 (.d.ts
) 也被生成。
这是已发布模块的树(我们@987654326@时下载的那个):
.
├── dist
│ ├── Entry.d.ts
│ ├── EntryFilter.d.ts
│ ├── EntryFilter.js
│ ├── Entry.js
│ ├── EntryType.d.ts
│ ├── EntryType.js
│ ├── FSTypings.d.ts
│ ├── FSTypings.js
│ ├── index.d.ts
│ └── index.js
├── LICENSE
├── package.json
└── README.md
package.json
确实包含以下条目:
"main": "dist/index.js",
"types": "dist/index.d.ts",
...
因为模块在 Runkit(纯 JS)上正常工作,我认为我遇到的唯一问题与 TypeScript 相关,这不是 TypeScript 第一次告诉我模块不存在时缺少声明文件是唯一的问题.
我是否错过了编译过程中的一个步骤?
我的package.json
属性有错吗?
如果需要看更多代码,Github链接在问题的开头,发布的模块结构可以在这里找到:https://unpkg.com/ooafs@0.1.2/dist/。
【问题讨论】:
你在 node_modules 中看到ooafs
了吗?并且测试需要另一个错误或成功的模块。尝试关闭文件并打开(可能你没有下载打开,然后下载)
模块 is 已下载(它位于node_modules
),所有其他模块加载都没有问题,我重新启动了 VSCode 没有任何改进。这个问题肯定与我的模块有关。
【参考方案1】:
实际上,问题并非来自我的模块 (ooafs)。我在其中使用模块的项目的tsconfig.json
存在问题:module
属性显然必须设置为commonjs
。
很晚的编辑:
另外,我强烈建议将esModuleInterop
设置为true
,这样可以更自然地导入非es6 模块。
【讨论】:
请解释一下你对 commonjs 的意思。 在 tsconfig.json 的 compilerOptions 中从"module": "es6"
切换到 "module": "commonjs"
也修复了我的错误,但我不知道为什么。有人明白吗?以上是关于我自己的 TypeScript 模块的“找不到模块”的主要内容,如果未能解决你的问题,请参考以下文章
VueJS/Typescript 错误:找不到模块“我的模块”或其相应的类型声明