Node.js使用import报错cannot import outside a module的解决方法
Node.js ES模块导入报错解决方案
- 检查
package.json配置层级
确认"type": "module"是放在package.json的根配置层级,而非嵌套在scripts/dependencies等其他配置项内,正确配置示例如下:
{ "name": "your-project", "version": "1.0.0", "type": "module", "scripts": {}, "dependencies": {} }
- 修正导入路径大小写匹配
Node.js在macOS、Linux等类Unix系统下对文件路径大小写敏感,你导出常量的文件名为Constants.js(首字母大写),导入语句中写的是./constants.js(全小写),路径不匹配会导致模块识别异常,将导入语句修改为和实际文件名一致即可:
import {help1, help2, help3} from './Constants.js'
- 确认Node.js版本兼容性
Node.js 12.20.0以下版本对ES模块的支持不稳定,建议升级到14.x及以上的LTS版本,可执行node -v查看当前安装的Node.js版本。 - 调整运行启动参数
如果使用nodemon等第三方工具启动项目,或模块解析逻辑有自定义配置,可在启动命令中添加ES模块解析参数:
node --experimental-specifier-resolution=node backend.js
- 兜底方案:改用CommonJS规范
如果以上方案均无法生效,可临时切换为CommonJS写法兼容,修改对应文件代码即可:Constants.js代码:
const help1 = 5 const help2 = 6 const help3 = 7 module.exports = { help1, help2, help3 }
backend.js代码:
const {help1, help2, help3} = require('./Constants.js')
内容的提问来源于stack exchange,提问作者james wisley
相关产品推荐
相关产品推荐

