Node.js报错SyntaxError: Unexpected token 'export',配置Babel后仍未解决
解决Node.js中「SyntaxError: Unexpected token 'export'」错误
核心原因
你混用了CommonJS(require)和ES模块(export)语法,且当前Node.js环境未正确启用ES模块支持或Babel转译配置不完整。
解决方案(按优先级排序)
方案1:统一使用CommonJS语法(无需额外依赖)
直接将ES模块的export改为CommonJS的导出方式,和已有的require保持一致:
const User = require("../models/User.js"); const checkAdmin = async (req, res) => { const user = await User.findOne({ _id: req.user.userId }); // 注意:此处逻辑可能颠倒,admin角色应返回authorised: true? if (user.role !== "admin") { res.send({ authorised: true }); } else { res.send({ authorised: false }); } }; const getStats = async (req, res) => { // 你的业务逻辑 }; // 导出需要暴露的方法 module.exports = { checkAdmin, getStats };
修改后直接执行node your-file.js即可运行。
方案2:启用Node.js原生ES模块支持
如果想保留ES模块语法,执行以下两步:
- 将
require替换为ES模块的import:
import User from "../models/User.js"; export const checkAdmin = async (req, res) => { // 你的业务逻辑 }; export const getStats = async (req, res) => { // 你的业务逻辑 };
- 在项目根目录的
package.json中添加配置:
{ "type": "module" }
配置完成后用node your-file.js运行,Node.js 14.13.0+版本原生支持该功能。
方案3:完善Babel转译配置(适配旧Node.js版本)
若必须用Babel转译,你之前仅安装了@babel/preset-env,缺少核心依赖,需补充配置:
- 安装完整依赖包:
npm install --save-dev @babel/core @babel/cli @babel/preset-env
- 修正
.babelrc配置:
{ "presets": [["@babel/preset-env", { "targets": { "node": "current" } }]] }
- 在
package.json中添加运行脚本:
{ "scripts": { "start": "babel-node your-file.js" } }
- 启动项目:
npm start
额外提示
你的checkAdmin方法逻辑可能存在语义矛盾:当用户角色不是admin时返回authorised: true,建议检查判断条件是否颠倒。
内容的提问来源于stack exchange,提问作者Jun sj
相关产品推荐
相关产品推荐

