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

在DigitalOcean Ubuntu服务器用pm2启动App.js遇模块导入语法错误

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

问题原因

你的代码使用了ES模块的import语法,但Node.js默认以CommonJS(CJS)模式加载文件,导致语法不兼容报错。

解决方案

方法1:将项目设置为ES模块模式

在项目根目录的package.json中添加"type": "module"配置:

{
  "name": "your-project-name",
  "version": "1.0.0",
  "type": "module",
  // 其他原有配置...
}

修改完成后重启PM2进程:

pm2 restart App.js

方法2:修改文件后缀为.mjs

将使用import语法的文件后缀从.js改为.mjs(比如index.js改为index.mjs),同时更新App.js中对应的引用路径,之后重启PM2。

方法3:构建React项目后再启动(推荐)

React项目需要先编译成可执行的生产代码,不能直接运行src目录下的源文件:

  1. 执行构建命令(以create-react-app为例):
npm run build
  1. 全局安装静态服务工具serve:
npm install -g serve
  1. 用PM2启动构建后的服务:
pm2 start serve --name "react-app" -- -s build

报错日志原文

/var/www/project/src/index.js:1 0|src      | import React from 'react'; 0|src      | ^^^^^^ 0|src      | 0|src      | SyntaxError: Cannot use import statement outside a module 0|src      |     at wrapSafe (internal/modules/cjs/loader.js:1001:16) 0|src      |     at Module._compile (internal/modules/cjs/loader.js:1049:27) 0|src      |     at Object.Module._extensions..js (internal/modules/cjs/loader.js:1114:10) 0|src      |     at Module.load (internal/modules/cjs/loader.js:950:32) 0|src      |     at Function.Module._load (internal/modules/cjs/loader.js:790:12) 0|src      |     at Object.<anonymous> (/usr/lib/node_modules/pm2/lib/ProcessContainerFork.js:33:23) 0|src      |     at Module._compile (internal/modules/cjs/loader.js:1085:14) 0|src      |     at Object.Module._extensions..js (internal/modules/cjs/loader.js:1114:10) 0|src      |     at Module.load (internal/modules/cjs/loader.js:950:32) 0|src      |     at Function.Module._load (internal/modules/cjs/loader.js:790:12)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 03:30:50