在用户模型中导入uuid时出现「Cannot use import statement outside a module」语法错误的问题咨询
这个错误我之前也碰到过,本质是Node.js模块系统的冲突问题——默认情况下Node.js把.js文件当作CommonJS模块处理,但你用了ES模块的import语法,两者不兼容就触发了报错。下面是几个可行的解决方案:
解决方法
1. 在package.json中声明项目为ES模块(推荐)
如果你的项目打算统一使用ES模块语法,这是最省心的方案:
- 打开项目根目录的
package.json文件 - 添加一行
"type": "module"配置,示例如下:
{ "name": "your-project", "version": "1.0.0", "type": "module", // 新增这行声明 "dependencies": { "uuid": "^9.0.0" } }
保存后,Node.js会自动把所有.js文件识别为ES模块,import语句就能正常工作了。
2. 将目标文件扩展名改为.mjs
如果只是单个文件需要用ES模块,不想修改全局配置,可以把你的用户模型文件后缀从.js改成.mjs。Node.js会默认把.mjs文件当作ES模块处理,直接解决语法冲突。
3. 改用CommonJS的require语法
如果你的项目还是想沿用CommonJS模块系统,只需要把import替换成对应的require写法:
const { v1: uuidv1 } = require('uuid');
这样就能和Node.js默认的模块规则兼容,不会再出现语法错误。
额外提示
- 确保你的Node.js版本在12.x及以上(推荐14.x+),更早的版本对ES模块的支持不完善;
- 如果是在浏览器环境中遇到这个错误,需要在加载脚本的
<script>标签里添加type="module"属性,比如:<script type="module" src="your-file.js"></script>
内容的提问来源于stack exchange,提问作者JIGNESH PATEL
相关产品推荐
相关产品推荐

