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

Node.js应用导入@microsoft/mgt库出现Unexpected token 'export'报错如何解决

错误原因

你遇到的Unexpected token 'export'报错,是因为Node.js默认使用CommonJS模块规范加载代码,而@microsoft/mgt-element包仅发布了ES Module(ESM)格式的产物,同时你配置的Babel默认不会转译node_modules目录下的第三方依赖,导致ESM的export语法没有被转换为CommonJS兼容语法,直接被Node执行就抛出了语法错误。

解决方案

你可以选择以下任意一种方案修复问题:

方案1:调整Babel配置,转译MGT相关依赖

修改你的Babel配置文件(babel.config.js/babel.config.json/.babelrc),新增配置排除对@microsoft系列包的跳过转译规则,示例配置如下:

// babel.config.js 示例
module.exports = {
  presets: [
    ['@babel/preset-env', {
      targets: { node: 'current' }
    }]
  ],
  // 除了@microsoft下的包,其余node_modules依赖不转译
  exclude: /node_modules\/(?!@microsoft)/
}

修改后重启服务即可生效。

方案2:开启Node.js原生ESM支持

如果你不需要兼容旧版CommonJS语法,可以直接开启Node.js的ESM原生支持:

  • 打开项目根目录的package.json文件,新增顶级配置项 "type": "module"
  • 替换项目内所有require/module.exports语法为import/export语法,相对路径引入需补全文件后缀(例如./utils改为./utils.js)
    该方案不需要修改Babel配置,Node原生就能识别ESM的export语法。

方案3:使用动态import加载MGT包

如果不想修改全局配置,可以将原有导出语句替换为兼容CommonJS的动态导入写法:

// 替换原有的 export * from '@microsoft/mgt-element'
import('@microsoft/mgt-element').then(mgtModule => {
  module.exports = mgtModule
})
验证排查项
  • 确认你安装的@babel/preset-env为最新稳定版,避免版本兼容导致转译失效
  • 如果你使用@babel/register启动项目,需要同步在注册配置中添加ignore: [/node_modules\/(?!@microsoft)/]参数

内容的提问来源于stack exchange,提问作者Diptanu Saha

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.09 04:48:02