“无法找到我自己的 TypeScript 模块的模块”

MrA*_*ima 7 node.js npm node-modules typescript

我刚刚向 NPM 注册表ooafs发布了一个新的基于 TypeScript 的模块。然而,当我尝试安装它在别的打字稿项目导入,VSCode使我对import语句以下错误:Cannot find module 'ooafs'.ts(2307)

该模块的源文件被编译为 JavaScript 到一个dist/文件夹中,并且.d.ts还会生成定义 ( )。

这是已发布模块的树(我们下载的那个npm install):

.
??? 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
Run Code Online (Sandbox Code Playgroud)

package.json确实包含以下项目:

{
    "main": "dist/index.js",
    "types": "dist/index.d.ts",
    ...
}
Run Code Online (Sandbox Code Playgroud)

因为该模块在 Runkit(纯 JS)上正常工作,所以我认为我遇到的唯一问题与 TypeScript 相关,并且当缺少声明文件是唯一的问题时,TypeScript 告诉我模块不存在并不是第一次。

我错过了编译过程中的一个步骤吗?我的package.json属性有问题吗?

如果您需要查看更多代码,Github 链接在问题的开头,发布的模块结构可以在这里找到:https : //unpkg.com/ooafs@0.1.2/dist/

MrA*_*ima 11

实际上,问题不是来自我的模块(ooafs)。这是tsconfig.json我使用模块的项目的问题:该module属性必须设置为commonjs显然。

非常晚的编辑: 另外,我强烈建议设置esModuleInteroptrue允许您以更自然的方式导入非 es6 模块。

  • 在 tsconfig.json 的 compilerOptions 中从 ```"module": "es6"``` 切换到 ```"module": "commonjs"``` 也修复了我的错误,但我不知道为什么。有人明白这一点吗? (3认同)
  • 请详细解释一下您对 commonjs 的理解。 (2认同)