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

现有项目引入TypeScript后出现import语句使用错误求助

解决TypeScript引入时的SyntaxError: Cannot use import statement outside a module错误

核心原因

直接用require引入未编译的.ts文件,Node.js无法解析TypeScript的ES模块语法,同时默认tsconfig.json的编译配置可能未适配CommonJS模块规范(你的server.js采用的是CommonJS)。

解决方案

方案1:先编译TypeScript再引入

  1. 调整tsconfig.json配置,确保编译输出符合CommonJS规范:
{
  "compilerOptions": {
    "target": "ES6", // 可根据Node.js版本调整
    "module": "CommonJS", // 编译为CommonJS模块,兼容require语法
    "outDir": "./dist", // 指定编译后文件的输出目录
    "strict": true,
    "esModuleInterop": true // 处理ES模块与CommonJS的兼容问题
  },
  "include": ["src/**/*"] // 指定要编译的TypeScript文件范围
}
  1. 执行编译命令,将.ts文件转为适配Node.js的.js文件:
tsc
  1. 修改server.js中的引入路径,指向编译后的文件:
// 替换原错误引入:require('./src/utils/cms/index.ts')
const CMS = require('./dist/utils/cms/index.js');

方案2:用ts-node直接运行TypeScript(无需提前编译)

如果不想每次修改都手动编译,可以用ts-node直接处理TypeScript文件:

  1. 安装ts-node依赖:
npm install ts-node --save-dev
  1. 修改启动命令,用ts-node代替node运行项目:
ts-node server.js

注:ts-node会自动处理编译逻辑,需确保tsconfig.json的module配置保持"CommonJS"以兼容server.js的require语法

额外提示(可选)

若想将项目切换为ES模块规范:

  • 在package.json中添加"type": "module"
  • 将tsconfig.json的module设为"ESNext"
  • server.js中改用import语法引入文件(需确保所有模块统一遵循ES模块规范)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 04:45:44