转换到TypeScript,同时保持CommonJS格式
我有一个很大的JavaScript代码库,我想慢慢过渡到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, "
.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
放在子文件夹中。不管怎样,一切都能正常工作。你说得对,我应该在发布之前对此进行进一步测试。事实证明,这个问题与我的设置高度相关。感谢您抽出时间来测试这一点。