You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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模块语法,执行以下两步:

  1. 将require替换为ES模块的import:
import User from "../models/User.js";

export const checkAdmin = async (req, res) => {
  // 你的业务逻辑
};

export const getStats = async (req, res) => {
  // 你的业务逻辑
};
  1. 在项目根目录的package.json中添加配置:
{
  "type": "module"
}

配置完成后用node your-file.js运行,Node.js 14.13.0+版本原生支持该功能。

方案3:完善Babel转译配置(适配旧Node.js版本)

若必须用Babel转译,你之前仅安装了@babel/preset-env,缺少核心依赖,需补充配置:

  1. 安装完整依赖包:
npm install --save-dev @babel/core @babel/cli @babel/preset-env
  1. 修正.babelrc配置:
{
  "presets": [["@babel/preset-env", { "targets": { "node": "current" } }]]
}
  1. 在package.json中添加运行脚本:
{
  "scripts": {
    "start": "babel-node your-file.js"
  }
}
  1. 启动项目:
npm start

额外提示

你的checkAdmin方法逻辑可能存在语义矛盾:当用户角色不是admin时返回authorised: true,建议检查判断条件是否颠倒。

内容的提问来源于stack exchange,提问作者Jun sj

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.15 02:32:05