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

Koa搭配TypeScript运行报Cannot use import outside of a module求助

问题原因梳理
  • 直接用nodemon运行.ts文件时,没有指定ts-node加载服务端专用的tsconfig配置,默认读取根目录的tsconfig.json,该配置中module字段为esnext,Node.js默认不识别ES模块的import语法,因此触发Cannot use import outside statement outside of a module报错。
  • 自行添加"type": "module"的操作和现有配置冲突,你的tsconfig.server.json明确配置输出commonjs模块,且ts-node对ESM模式的.ts文件需要额外特殊配置,因此添加后会出现无法识别.ts后缀的错误。
  • 现有start脚本没有关联ts-node执行器,nodemon不知道需要用ts-node转译.ts文件。
解决方案
  1. 先删除package.json中之前添加的"type": "module"配置,恢复原有配置。
  2. 修改package.json的scripts字段,调整start脚本为指定ts-node加载服务端tsconfig配置:
"scripts": {
  "start": "NODE_PATH=src nodemon --exec ts-node --project tsconfig.server.json src/index.ts"
}

其中--exec参数告诉nodemon使用ts-node执行.ts文件,--project参数指定加载tsconfig.server.json配置,该配置中module为commonjs,适配Node.js默认模块规范,可解决import语法报错问题。
3. 检查tsconfig.server.json的include字段,当前配置["*.ts"]仅匹配根目录的.ts文件,如果你的入口、业务代码都存放在src目录下,需要将include调整为["src/**/*.ts"],避免ts-node无法识别src下的ts文件。
4. 建议调整app.ts的导出写法,统一使用ES模块导出规范,将exports.start =修改为export const start =,避免混合写法出现导出异常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 06:36:03