【问题标题】:`Cannot find module` for my own TypeScript module我自己的 TypeScript 模块的“找不到模块”
【发布时间】:2019-07-08 19:17:32
【问题描述】:

我刚刚向 NPM 注册表ooafs 发布了一个新的基于 TypeScript 的模块。但是,当我尝试安装它并将其导入另一个 TypeScript 项目时,VSCode 在导入语句中给出以下错误:Cannot find module 'ooafs'.ts(2307)

这个模块的源文件被编译成 JavaScript 到一个dist/ 文件夹并且定义 (.d.ts) 也被生成。

这是已发布模块的树(我们@9​​87654326@时下载的那个):

.
├── 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 没有任何改进。这个问题肯定与我的模块有关。

标签: node.js typescript npm node-modules


【解决方案1】:

实际上,问题并非来自我的模块 (ooafs)。我在其中使用模块的项目的tsconfig.json 存在问题:module 属性显然必须设置为commonjs

很晚的编辑: 另外,我强烈建议将esModuleInterop 设置为true,这样可以更自然地导入非es6 模块。

【讨论】:

  • 请解释一下你对 commonjs 的意思。
  • 在 tsconfig.json 的 compilerOptions 中从 "module": "es6" 切换到 "module": "commonjs" 也修复了我的错误,但我不知道为什么。有人明白吗?
猜你喜欢
  • 2017-06-29
  • 2019-01-29
  • 2020-03-01
  • 2019-08-16
  • 2016-09-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-03-02
相关资源
最近更新 更多