转换到TypeScript,同时保持CommonJS格式

转换到TypeScript,同时保持CommonJS格式,typescript,commonjs,Typescript,Commonjs,我有一个很大的JavaScript代码库,我想慢慢过渡到TypeScript。它目前使用CommonJS格式设置,在一个完美的世界中,我希望能够一次将一个.js文件更改为.ts 我的tsconfig.json如下所示: { "compilerOptions": { "allowJs": true, "checkJs": false, "target": "es5", "module": "commonjs", "noEmit": true, "

我有一个很大的JavaScript代码库,我想慢慢过渡到TypeScript。它目前使用CommonJS格式设置,在一个完美的世界中,我希望能够一次将一个
.js
文件更改为
.ts

我的
tsconfig.json
如下所示:

{
  "compilerOptions": {
    "allowJs": true,
    "checkJs": false,
    "target": "es5",
    "module": "commonjs",
    "noEmit": true,
    "strict": true,
    "resolveJsonModule": true,
    "moduleResolution": "node",
    "esModuleInterop": true,
    "allowSyntheticDefaultImports": true,
    "types": [
      "node"
    ],
  },
  "exclude": [
    "node_modules"
  ]
}
我已经修改了我的启动脚本,使用
ts节点-p tsconfig.json
。看来一切都好起来了

我的问题在于将TS导入JS。正如我提到的,它当前是使用CommonJS设置的,所以
模块。导出
需要
。例如,
file-a.js
需要
file-b.js

//file-a.js
const{exampleB}=require('../file-b');
//file-b.js
函数exampleB(){
返回“你好世界”;
}
module.exports={
例B:,
};
当我将
file-b.js
更改为
.ts
,解决任何基本类型检查问题,然后启动命令时,我得到异常
错误:找不到来自
file-a.js
的模块“../file-b”

我假设这是Typescript在解析我的CommonJS格式时遇到问题。我是否可以将TypeScript配置为使用这种格式,并允许我在缓慢转换时将TS文件导入JS


如果有帮助的话,我甚至可以将所有
module.exports={fn}
更改为
export fn

这就是我所做的:

  • 创建了一些文件夹,其中包含
    tsconfig.json
    file-a.js
    /(*)
    file-b.js
    。所有这些都是您提供的内容
  • npm安装-D ts节点
  • npm安装-D typescript
  • npm安装-D@types/node
  • '/home/../some_folder/node\u modules/.bin/ts node'-P tsconfig.json file-a.js
    ,它成功了
  • file-b.js
    重命名为
    file-b.ts
  • 再次运行
    '/home/../some\u folder/node\u modules/.bin/ts node'-P tsconfig.json file-a.js
    。。。而且效果也不错
  • 因此,要么你需要为你的问题添加更多的上下文,这样你面临的问题就可以重现,要么从创建一个像我重现的那样简单的“模板”打字脚本项目开始。确保它工作正常,然后才开始添加来自原始项目的文件。也许你在一个看似无关的地方做了一些改变,只是看不见而已


    (*)在你的问题中,你写了
    。/file-b
    ,而不是
    /file-b
    。但为了回答清楚,我略过了这个细节。但我也尝试将
    file-b
    放在项目文件夹之外,并尝试将
    file-a
    放在子文件夹中。不管怎样,一切都能正常工作。

    你说得对,我应该在发布之前对此进行进一步测试。事实证明,这个问题与我的设置高度相关。感谢您抽出时间来测试这一点。