代码上传至托管服务器后报错,本地正常(import语句模块问题)
解决Node.js中
import语法报错:"Cannot use import statement outside a module" 问题原因
Node.js 默认采用 CommonJS模块系统(使用require()/module.exports),import/export属于ES模块语法。若未明确配置让Node.js识别当前文件为ES模块,就会触发该语法错误。本地能正常运行是因为你本地项目已配置ES模块识别,而服务器端未做相同配置。
解决步骤
方法1:配置package.json启用ES模块
在项目根目录的package.json中添加"type": "module"字段:
{ "name": "your-project-name", "type": "module", // 保留原有其他配置 }
添加后,Node.js会将项目中所有.js文件默认视为ES模块,即可正常使用import语法。
方法2:修改文件后缀为.mjs
若不想修改package.json,可将使用import语法的文件后缀从.js改为.mjs(比如把app.js改成app.mjs)。Node.js会自动识别.mjs后缀的文件为ES模块。
额外注意点
- 若项目同时存在CommonJS和ES模块文件:ES模块中可通过
import()动态导入CommonJS模块,但CommonJS文件无法直接使用import,只能用require()。 - 检查服务器Node.js版本:确保服务器Node.js版本支持ES模块(最低要求v12.20.0或v14.13.0,推荐使用v16及以上稳定版)。
内容的提问来源于stack exchange,提问作者Marcin Madera
相关产品推荐
相关产品推荐

