Node.js服务启动报错:无法在模块外使用import语句
执行命令及输出
执行命令:
server>npm start
命令输出:
server@1.0.0 start
node server.js
报错信息:
(node:12504) 警告:要加载ES模块,请在package.json中设置"type": "module",或者使用.mjs扩展名。 (使用 `node --trace-warnings ...` 查看警告创建位置) D:\TerProject\server\server.js:1 import express from 'express' ^^^^^^ 语法错误:无法在模块外使用import语句 at Object.compileFunction (node:vm:352:18) at wrapSafe (node:internal/modules/cjs/loader:1026:15) at Module._compile (node:internal/modules/cjs/loader:1061:27) at Object.Module._extensions..js (node:internal/modules/cjs/loader:1149:10) at Module.load (node:internal/modules/cjs/loader:975:32) at Function.Module._load (node:internal/modules/cjs/loader:822:12) at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:81:12) at node:internal/main/run_main_module:17:47 Node.js v17.3.0
解决方法
这个问题是因为Node.js默认将.js文件识别为CommonJS模块,但你代码里用了ES模块的import语法,两种快速解决方式:
- 修改package.json
在项目根目录的package.json中添加"type": "module"字段,示例:
{ "name": "server", "version": "1.0.0", "type": "module", "scripts": { "start": "node server.js" } }
保存后重新运行npm start即可。
- 修改文件扩展名
把server.js重命名为server.mjs,同时更新package.json里的启动命令:
{ "scripts": { "start": "node server.mjs" } }
再执行npm start就能正常运行。
内容的提问来源于stack exchange,提问作者Bouazzaoui Mohamed
相关产品推荐
相关产品推荐

