You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何无需转译直接运行单行TypeScript文件?

如何无需转译直接运行单行TypeScript文件?

我的问题背景

我是TypeScript新手,想不用转译直接通过ts-node运行单行TS程序。我的环境配置如下:
环境配置截图

我已经执行了以下全局安装命令:

npm install -g typescript
npm install -g ts-node

我的TS代码很简单:

Console.log("Hello World");

但运行命令 ts-node "g:\New folder\Session1.ts" 时,出现了如下错误:

PS G:\New folder> ts-node "g:\New folder\Session1.ts"
(node:5020) Warning: To load an ES module, set "type": "module" in the package.json or use the .mjs extension.
(Use `node --trace-warnings ...` to show where the warning was created)
g:\New folder\Session1.ts:2
export {};
^^^^^^

SyntaxError: Unexpected token 'export'
    at internalCompileFunction (node:internal/vm:73:18)
    at wrapSafe (node:internal/modules/cjs/loader:1178:20)
    at Module._compile (node:internal/modules/cjs/loader:1220:27)
    at Module.m._compile (C:\Users\user\AppData\Roaming\npm\node_modules\ts-node\src\index.ts:1618:23)
    at Module._extensions..js (node:internal/modules/cjs/loader:1310:10)
    at Object.require.extensions.<computed> [as .ts] (C:\Users\user\AppData\Roaming\npm\node_modules\ts-node\src\index.ts:1621:12)
    at Module.load (node:internal/modules/cjs/loader:1119:32)
    at Function.Module._load (node:internal/modules/cjs/loader:960:12)
    at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:81:12)
    at phase4 (C:\Users\user\AppData\Roaming\npm\node_modules\ts-node\src\bin.ts:649:14)

错误截图

我没有任何导入导出语句,原本以为不用package.json也能运行,但即使添加了package.json问题依然存在,求帮忙解决!


解决方案

别担心,这个问题本质是ts-node默认的模块配置和Node.js的模块系统不匹配导致的,我给你几个简单可行的解决办法:

方法1:命令行直接指定模块模式

运行ts-node的时候加上--esm或--cjs参数,强制统一模块系统,比如:

# 使用ES模块模式运行
ts-node --esm "g:\New folder\Session1.ts"
# 或者使用CommonJS模式(Node.js默认)
ts-node --cjs "g:\New folder\Session1.ts"

方法2:创建tsconfig.json统一配置

在你的TS文件所在目录新建一个tsconfig.json,明确指定编译器使用CommonJS模块:

{
  "compilerOptions": {
    "module": "CommonJS",
    "target": "ES6"
  }
}

之后再运行原来的ts-node命令,就能正常执行了。

方法3:修正代码的小细节

另外提个小问题:你的代码里Console是大写的C,但TypeScript里全局控制台对象是小写的console,虽然这不是当前报错的原因,但修正后才能正确输出内容:

console.log("Hello World");

方法4:正确配置package.json(如果要用的话)

如果坚持用package.json,要确保模块配置和ts-node匹配。比如package.json里设置ES模块:

{
  "type": "module",
  "devDependencies": {
    "ts-node": "^10.9.1",
    "typescript": "^5.2.2"
  }
}

同时在tsconfig.json里对应设置:

{
  "compilerOptions": {
    "module": "ESNext"
  }
}

这样两者模块系统一致,就不会再出现冲突了。

备注:内容来源于stack exchange,提问作者Brijesh Roy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.15 09:28:07