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

使用ts-node启动server.ts时Axios导入出现语法错误求助

问题原因及解决办法

问题原因

Node.js v12.9.1对ES模块(ESM)的支持非常有限,默认无法直接解析import语句。你当前使用的Axios版本大概率已切换为纯ES模块发布(不再提供CommonJS格式导出),当用require('axios')加载这个ES模块文件时,Node会把它当作CommonJS代码解析,自然会因import这个ES语法报错。

解决办法

1. 降级到兼容Node v12的Axios版本

选择仍支持CommonJS导出的Axios版本,比如axios@0.27.2,这个版本同时提供两种模块格式。执行安装命令:

npm install axios@0.27.2

之后用require('axios')即可正常加载,不会触发语法错误。

2. 配置ts-node和Node支持ES模块

如果不想降级Axios,可通过配置让Node和ts-node识别ES模块:

  • 在项目根目录的package.json中添加"type": "module"字段
  • 将server.ts中的引入方式改为import axios from 'axios'
  • 调整tsconfig.json,确保compilerOptions里的module设为ESNext或ES2020,moduleResolution设为NodeNext或Node12
  • 修改package.json的start脚本,给ts-node加上--esm参数:
"scripts": {
  "start": "ts-node --esm server.ts"
}

注意:Node v12对--esm的支持有局限性,可能会出现其他兼容问题。

3. 升级Node.js版本(最彻底方案)

Node v12已停止维护,对ES模块的支持不完善是根本问题。建议升级到Node v14及以上的LTS版本(比如v14.21.3),新版本对ES模块的支持更完善,既能用import也能通过require加载兼容的ES模块,还能避免后续更多类似兼容性问题。

内容的提问来源于stack exchange,提问作者TyT-xexebe

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 10:01:01