假设我有一个 esm sayhi.ts 模块:
const sayhi = () => 'hi in typescript';
export default sayhi;
然后我有相同的模块,但它是一个 commonjs sayhi.js 文件:
const sayhi = () => 'hi in javascript';
module.exports = sayhi;
然后我使用 ts-node 来运行 index.ts:
import sayhi from "./sayhi";
console.log(sayhi()); // returns 'hi in javascript'
似乎总是返回 sayhi.js 模块而不是 sayhi.ts。如何让 ts-node 或 ts-node-dev 在 .js 文件之前优先导入 .ts 文件,主要只是出于开发目的。这也是我的 tsconfig.json
{
"compilerOptions": {
"target": "esnext",
"jsx": "react",
"module": "commonjs",
"moduleResolution": "node",
"resolveJsonModule": true,
"esModuleInterop": true,
"forceConsistentCasingInFileNames": true,
"strict": true,
"skipLibCheck": true
}
}
您需要preferTsExts选项。 https://typestrong.org/ts-node/docs/options#prefertsexts