how*_*d_9 5 javascript commonjs node.js npm typescript
每当我在多个 TypeScript 文件中导入相同的 npm 模块时,error TS2451: Cannot redeclare block-scoped variable \'os\'一旦运行 TypeScript 编译器,我就会收到错误“” tsc。我的项目设置如下所示。
我正在使用 NodeJS v18.15.0。
\n目录结构
\nProject_Root\n\xe2\x94\x9c\xe2\x94\x80 main.ts\n\xe2\x94\x9c\xe2\x94\x80 worker.ts\n\xe2\x94\x9c\xe2\x94\x80 package.json\n\xe2\x94\x94\xe2\x94\x80 tsconfig.json\nRun Code Online (Sandbox Code Playgroud)\n主要.ts
\nconst worker = require(\'./worker\');\nconst os = require(\'os\');\n\nconsole.log(\'name = \' + worker.getName() );\nconsole.log(\'memory = \' + os.freemem() );\nRun Code Online (Sandbox Code Playgroud)\n工人.ts
\nconst os = require(\'os\');\n\nmodule.exports =\n class worker {\n static getName() : string { return "worker-" + os.freemem(); }\n }\nRun Code Online (Sandbox Code Playgroud)\n包.json
\nProject_Root\n\xe2\x94\x9c\xe2\x94\x80 main.ts\n\xe2\x94\x9c\xe2\x94\x80 worker.ts\n\xe2\x94\x9c\xe2\x94\x80 package.json\n\xe2\x94\x94\xe2\x94\x80 tsconfig.json\nRun Code Online (Sandbox Code Playgroud)\ntsconfig.json
\nconst worker = require(\'./worker\');\nconst os = require(\'os\');\n\nconsole.log(\'name = \' + worker.getName() );\nconsole.log(\'memory = \' + os.freemem() );\nRun Code Online (Sandbox Code Playgroud)\n我已经尝试了以下帖子中的前 3 个答案,但没有成功:
\n| 相关文章 | 结果 |
|---|---|
| 错误 TS2451:无法重新声明块作用域变量 \'$\' | 同样的错误(添加“skipLibCheck:true”标志后) |
| 如何解决这个 Cannot redeclare blockscoped variable \'ngDevMode\'? | 不适用(我没有使用 Angular) |
| TS2451:无法重新声明块作用域变量 | 不适用(我没有使用 ESLint) |
| 在 Angular CLI 中出现构建错误:无法重新声明块范围变量 \'ngDevMode\' | 不适用(我没有使用 Angular) |
| 在 TypeScript 中导入 npm JS 模块 | 不适用(我没有使用 Electron) |
这是因为 TypeScript 不考虑这两个文件模块,并使它们共享其范围。您可以使用moduleDetectiontsconfig 中的字段强制将它们识别为模块:
{
"compilerOptions": {
"moduleDetection": "force"
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
183 次 |
| 最近记录: |