如何在多个文件中导入 TypeScript 中的相同 npm 模块?

问题描述 投票:0回答:0

问题:

每当我在超过 1 个文件中导入相同的 npm 模块时,我一运行 TypeScript 编译器就会收到错误“

error TS2451: Cannot redeclare block-scoped variable 'os'
tsc
。我的项目设置如下所示。

我正在使用 NodeJS v18.15.0.


设置:

目录结构

Project_Root
├─ main.ts
├─ worker.ts
├─ package.json
└─ tsconfig.json

main.ts

const worker = require('./worker');
const os = require('os');

console.log('name = ' + worker.getName() );
console.log('memory = ' + os.freemem() );

worker.ts

const os = require('os');

module.exports =
    class worker {
        static getName() : string { return "worker-" + os.freemem(); }
    }

package.json

{
  "devDependencies": {
    "@types/node": "^18.15.11",
    "typescript": "^5.0.3"
  }
}

tsconfig.json

{
  "compilerOptions": {
    "module": "commonjs",
    "target": "es5",
    "sourceMap": false
  },
  "exclude": ["node_modules"]
}

项目要求:

  • 要求 #1:没有外部包(RequireJS/Babel/Webpack/等),因为磁盘空间有限。
  • 要求 #2:IDE Intelli-sense 应该可以工作。我们可以使用任何 IDE。
  • 要求 #3:我们需要使用 CommonJS 风格的“require”关键字进行导入。

我尝试过的:

我尝试了以下帖子中的前 3 个答案,但没有成功:

相关帖子 结果
错误 TS2451:无法重新声明块作用域变量“$” 同样的错误(添加“skipLibCheck: true”标志后)
How to solve this Cannot redeclare block scoped variable 'ngDevMode'? 不适用(我没有使用 Angular)
TS2451:无法重新声明块作用域变量 不适用(我没有使用 ESLint)
在角度 CLI 中获取构建错误:无法重新声明块范围变量'ngDevMode' 不适用(我没有使用 Angular)
在 TypeScript 中导入 npm JS 模块 不适用(我没有使用 Electron)
javascript node.js typescript npm commonjs
© www.soinside.com 2019 - 2024. All rights reserved.