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

服务器端TS项目运行报错:SyntaxError: Cannot use import statement outside a module

解决TS服务器部署时自定义模块的SyntaxError: Cannot use import statement outside a module错误

排查方向与解决步骤

1. 检查自定义模块rithmic-api的package.json配置

确认rithmic-api/package.json中没有设置"type": "module"。如果存在该配置,Node会将其识别为ES模块,与主项目的CommonJS模块体系冲突,导致import语法报错。将其修改为"type": "commonjs"或直接删除该字段。

2. 确保自定义模块已编译为CommonJS格式

本地开发时可能IDE或脚本自动完成了TS编译,但服务器上需要手动对rithmic-api执行编译:

  • 进入rithmic-api目录,执行tsc命令生成编译后的JS文件(确保其tsconfig.json的module字段为CommonJS,outDir配置正确)。
  • 确认主项目引入的rithmic-api中存在编译后的JS文件,而非仅TS源码。

3. 调整ts-node的启动参数

ts-node默认可能不会处理file:引入的外部TS模块,需显式指定处理所有文件或包含目标模块路径:

  • 启动命令改为:ts-node --files ./src/index.ts(--files参数强制ts-node处理所有相关文件)。
  • 或在主项目的tsconfig.json中,将rithmic-api的路径添加到include数组中,确保ts-node转译该模块的TS代码:
    {
      "include": ["./src/**/*", "./rithmic-api/**/*"]
    }
    

4. 验证服务器上的模块安装状态

确保服务器上安装rithmic-api时,所有文件(包括tsconfig、编译产物)都被正确复制:

  • 删除主项目的node_modules/rithmic-api目录,重新执行npm install,检查该目录下是否包含编译后的JS文件和正确的配置文件。

5. 统一本地与服务器的ts-node版本

不同版本的ts-node对模块解析逻辑可能存在差异,执行ts-node -v查看本地与服务器的版本,确保两者一致,或升级到最新稳定版本。

6. 尝试使用ts-node-dev的显式配置

如果使用tsnd(ts-node-dev)启动,可在启动命令中添加--respawn --transpile-only参数,强制重新转译所有模块:

tsnd --respawn --transpile-only ./src/index.ts

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 02:31:13