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

Next.js+TypeScript项目中node运行.ts文件报Unexpected token ':'错误

解决Next.js项目中直接运行TypeScript文件时的SyntaxError错误

核心问题

直接用node src/options.ts运行TS文件必然失败——Node.js本身不识别TypeScript的类型语法(比如参数后的:)。你虽然装了ts-node,但当前项目的tsconfig.json是为Next.js构建工具量身定制的,其中的关键配置会导致ts-node无法正常工作。

解决方案

方案1:临时覆盖配置运行

直接在命令行指定ts-node需要的编译选项,绕过原tsconfig的限制:

ts-node --compiler-options '{"module":"CommonJS","noEmit":false}' src/options.ts

方案2:创建Node环境专用的tsconfig

避免修改Next.js的核心配置,新建tsconfig-node.json文件:

{
  "extends": "./tsconfig.json",
  "compilerOptions": {
    "module": "CommonJS",
    "noEmit": false,
    "moduleResolution": "node"
  },
  "exclude": ["node_modules", ".next"]
}

然后用该配置运行TS文件:

ts-node --project tsconfig-node.json src/options.ts

方案3:添加npm脚本简化操作

在package.json的scripts中新增命令:

"scripts": {
  // 原有脚本...
  "run:options": "ts-node --project tsconfig-node.json src/options.ts"
}

之后只需执行:

npm run run:options

为什么之前的尝试无效?

  • node src/options.ts:Node.js原生不支持TypeScript,必须经过转译才能执行
  • 修改原tsconfig的module为CommonJS:Next.js依赖module: esnext和moduleResolution: bundler来支持现代打包特性,修改后会破坏项目的正常构建流程
  • 仅安装ts-node未调整配置:原tsconfig中的noEmit: true会阻止ts-node生成临时可执行的JS文件,moduleResolution: bundler也不符合Node.js的模块解析规则

内容的提问来源于stack exchange,提问作者letmeeatbrioche

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 00:33:29