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

Pump 3.0.1报Unexpected token {语法错误,求非升级解决方案

问题描述

2024年9月10日太平洋标准时间约10:30,执行ng build命令时突然抛出如下语法错误。已知当前使用的是旧版本框架,虽清楚可能需要升级至最新版本,但希望获得其他可行解决方案。

错误日志

Unexpected token {
/Users/MattWh@vsp.com/git/provider-fee-ui/node_modules/pump/index.js:7
} catch {}
        ^

SyntaxError: Unexpected token {
    at createScript (vm.js:80:10)
    at Object.runInThisContext (vm.js:139:10)
    at Module._compile (module.js:599:28)
    at Object.Module._extensions..js (module.js:646:10)
    at Module.load (module.js:554:32)
    at tryModuleLoad (module.js:497:12)
    at Function.Module._load (module.js:489:3)
    at Module.require (module.js:579:17)
    at require (internal/module.js:11:18)
    at Object.<anonymous> (/Users/MattWh@vsp.com/git/provider-fee-ui/node_modules/mississippi/index.js:1:85)
    at Module._compile (module.js:635:30)
    at Object.Module._extensions..js (module.js:646:10)
    at Module.load (module.js:554:32)
    at tryModuleLoad (module.js:497:12)
    at Function.Module._load (module.js:489:3)
    at Module.require (module.js:579:17)

环境信息

Angular CLI版本信息

_                      _                 ____ _     ___
/ \   _ __   __ _ _   _| | __ _ _ __     / ___| |   |_ _|
/ △ \ | '_ \ / _` | | | | |/ _` | '__|   | |   | |    | |
/ ___ \| | | | (_| | |_| | | (_| | |      | |___| |___ | |
/_/   \_\_| |_|\__, |\__,_|_|\__,_|_|       \____|_____|___|
                |___/
    
Angular CLI: 7.0.7
Node: 8.9.0
OS: darwin x64
Angular: 7.2.16
... animations, common, compiler, compiler-cli, core, forms
... http, language-service, platform-browser
... platform-browser-dynamic, router

Package                           Version
-----------------------------------------------------------
@angular-devkit/architect         0.13.10
@angular-devkit/build-angular     0.13.10
@angular-devkit/build-optimizer   0.13.10
@angular-devkit/build-webpack     0.13.10
@angular-devkit/core              7.3.10
@angular-devkit/schematics        7.0.7
@angular/cdk                      7.3.7
@angular/cli                      7.0.7
@angular/flex-layout              7.0.0-beta.24
@angular/material                 7.3.7
@ngtools/webpack                  7.3.10
@schematics/angular               7.0.7
@schematics/update                0.10.7
rxjs                              5.6.0-forward-compat.5
typescript                        3.1.8
webpack                           4.29.0

Node与npm版本

node -v
v8.9.0

npm -v
5.5.1
解决方案

1. 锁定pump包的兼容版本

错误根源是pump包新版本使用了无参数catch语法(catch {}),而Node.js 8.x不支持该ES2019特性。在package.json中添加resolutions字段,强制安装兼容Node.js 8的版本:

{
  "resolutions": {
    "pump": "^3.0.0"
  }
}

添加后执行:

rm -rf node_modules package-lock.json
npm install

2. 锁定mississippi的兼容版本

mississippi依赖的pump版本过高,可直接安装依赖低版本pump的mississippi版本:

npm install mississippi@^3.0.0 --save-exact

3. 用Babel转译不兼容的依赖包

配置Webpack转译pump和mississippi,让语法兼容Node.js 8:

  1. 项目根目录创建webpack.config.js:
const path = require('path');
module.exports = {
  module: {
    rules: [
      {
        test: /\.js$/,
        include: [
          path.resolve(__dirname, 'node_modules/pump'),
          path.resolve(__dirname, 'node_modules/mississippi')
        ],
        use: {
          loader: 'babel-loader',
          options: {
            presets: [['@babel/preset-env', { targets: { node: '8.9.0' } }]]
          }
        }
      }
    ]
  }
};
  1. 安装Babel依赖:
npm install babel-loader @babel/core @babel/preset-env --save-dev
  1. 修改angular.json引入自定义配置:
{
  "projects": {
    "your-project-name": {
      "architect": {
        "build": {
          "builder": "@angular-devkit/build-angular:browser",
          "options": {
            "customWebpackConfig": {
              "path": "./webpack.config.js"
            }
          }
        }
      }
    }
  }
}

4. 临时升级Node.js版本

Node.js 10.x及以上支持无参数catch语法,若允许临时升级,直接升级到Node.js 10.x+即可解决问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 11:07:03