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

Nuxt/Webpack构建报错:Module parse failed: Unexpected character '#'

解决Nuxt构建时node-fetch-native的私有字段解析错误

错误原因

该错误源于node-fetch-native包使用了ES私有类字段(如#path这类语法),而你的Webpack配置将node_modules目录完全排除在Babel编译范围外,导致Webpack无法识别该语法,缺少对应的loader处理。

解决方案

1. 调整Webpack/Babel配置,让babel-loader处理目标依赖

修改Webpack规则,不要完全排除node_modules,仅排除除node-fetch-native之外的目录,让Babel编译这个依赖包:

module: {
  rules: [
    {
      test: /\.(js|jsx)$/,
      // 正则规则:排除node_modules下除node-fetch-native以外的目录
      exclude: /node_modules(?!\/node-fetch-native)/,
      use: {
        loader: 'babel-loader',
        options: {
          presets: ['@babel/preset-env'],
          plugins: [
            '@babel/plugin-proposal-private-property-in-object',
            '@babel/plugin-proposal-private-methods'
          ]
        }
      }
    }
  ]
}

2. 安装必要的Babel插件

如果@babel/preset-env未自动处理私有字段语法,需手动安装对应插件:

npm install --save-dev @babel/plugin-proposal-private-property-in-object @babel/plugin-proposal-private-methods

3. Nuxt项目专用配置方式

若使用Nuxt框架,直接修改webpack.config.js可能不生效,需在nuxt.config.js中通过build.extend扩展配置:

export default {
  build: {
    extend(config, { isDev, isClient }) {
      // 查找已有JS规则或添加新规则
      const jsRule = config.module.rules.find(rule => rule.test.test('.js'))
      if (jsRule) {
        // 修改排除规则,允许处理node-fetch-native
        jsRule.exclude = /node_modules(?!\/node-fetch-native)/
        // 追加必要Babel插件
        jsRule.use.options.plugins = [
          ...(jsRule.use.options.plugins || []),
          '@babel/plugin-proposal-private-property-in-object',
          '@babel/plugin-proposal-private-methods'
        ]
      } else {
        // 无JS规则时添加新规则
        config.module.rules.push({
          test: /\.(js|jsx)$/,
          exclude: /node_modules(?!\/node-fetch-native)/,
          use: {
            loader: 'babel-loader',
            options: {
              presets: ['@babel/preset-env'],
              plugins: [
                '@babel/plugin-proposal-private-property-in-object',
                '@babel/plugin-proposal-private-methods'
              ]
            }
          }
        })
      }
    }
  }
}

4. 排查依赖版本兼容性

  • 检查node-fetch-native版本与Nuxt/Webpack的匹配度,尝试升级或降级该包:
npm install node-fetch-native@latest
  • 确保Node.js版本在12.0.0以上,ES私有类字段需要Node.js 12+支持。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 19:50:17