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

运行React应用前执行Node脚本报错:Cannot use import statement outside a module

解决"Cannot use import statement outside a module"报错问题

这个错误是因为Node.js默认不支持直接运行使用ES模块语法(import)的TypeScript文件,同时未对TS代码做转译处理。以下是几种可行的解决办法:

方法1:使用ts-node直接运行TS文件

ts-node可以直接解析并执行TypeScript代码,无需提前编译。

  • 先安装依赖(如果项目里还没装):
    npm install -D ts-node typescript
    
  • 修改npm脚本中的命令,把node seedApp.ts替换成ts-node seedApp.ts,修改后的脚本如下:
    "web-dev-test-manually": "NODE_ENV=localApp ts-node seedApp.ts && yarn lint && yarn copyData && yarn compile-server && yarn start-static-server & node_modules/.bin/webpack-dev-server -d --watch",
    

方法2:改用CommonJS语法(修改代码)

把seedApp.ts里的ES模块语法换成CommonJS的require,这样Node.js可以直接识别:

const { setupDatabase } = require('../Database/SeedApp');

(async () => {
    await setupDatabase(['appdev/seed.companies.sql', 'appdev/seed.crafters.sql']);
})();

如果要保留TS语法,也可以先通过tsc编译成JS文件,再用node运行编译后的文件(比如node dist/seedApp.js),前提是tsconfig.json里的module设置为CommonJS。

方法3:配置Node.js支持ES模块+TS

如果项目想使用ES模块系统,可以按以下步骤配置:

  1. 在项目根目录的package.json中添加:
    "type": "module"
    
  2. 修改tsconfig.json的compilerOptions:
    {
      "compilerOptions": {
        "module": "ESNext",
        "moduleResolution": "NodeNext",
        "target": "ES2020",
        "esModuleInterop": true
      }
    }
    
  3. 安装必要依赖:
    npm install -D ts-node typescript @types/node
    
  4. 修改npm脚本中的命令为:
    ts-node --esm seedApp.ts
    

注意事项

  • 确保项目根目录有tsconfig.json文件,TypeScript会依据它来编译代码。
  • 如果使用方法1或3,ts-node会自动读取tsconfig.json的配置,所以要保证配置符合项目需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 09:22:11