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

执行quasar build构建Quasar项目失败,编译完成后报错

问题描述

使用quasar build命令构建Quasar项目时,编译进度到100%后出现如下错误:

App · ⚠️  1 error encountered:

./node_modules/htmlparser2/lib/esm/index.js 59:9
Module parse failed: Unexpected token (59:9)
File was processed with these loaders:
 * ./node_modules/@quasar/app/lib/webpack/loader.transform-quasar-imports.js
You may need an additional loader to handle the result of these loaders.
|     return getFeed(parseDOM(feed, options));
| }
> export * as DomUtils from "domutils";
| // Old name for DomHandler
| export { DomHandler as DefaultHandler };
 @ ./node_modules/sanitize-html/index.js 1:19-41
 @ ./node_modules/vue-sanitize/dist/vue-sanitize.js
 @ ./src/boot/sanitize.ts
 @ ./.quasar/client-entry.js
 @ multi ./.quasar/client-entry.js

 App · ⚠️  [FAIL] Build failed with 1 error. Check log above.

项目的package.json内容如下:

{
  "name": "rfasdef",
  "version": "0.0.1",
  "description": "",
  "productName": "",
  "cordovaId": "",
  "capacitorId": "",
  "author": "",
  "private": true,
  "scripts": {
    "lint": "eslint --ext .js,.ts,.vue --ignore-path .gitignore ./"
  },
  "dependencies": {
    "@quasar/extras": "^1.0.0",
    "@types/file-saver": "^2.0.5",
    "@types/jwt-decode": "^3.1.0",
    "axios": "^0.18.1",
    "crypto-js": "^4.0.0",
    "echarts": "^4.6.0",
    "file-saver": "^2.0.5",
    "formik": "^2.2.9",
    "jalaali-js": "^1.2.3",
    "jwt-decode": "^3.1.2",
    "lodash": "^4.17.21",
    "moment": "^2.29.4",
    "moment-duration-format": "^2.3.2",
    "moment-jalaali": "^0.9.6",
    "num2persian": "^3.2.2",
    "persianjs": "^0.4.0",
    "qjdatetime": "^1.1.0",
    "quasar": "^1.9.5",
    "sass": "^1.45.0",
    "vue-echarts": "^5.0.0-beta.0",
    "vue-i18n": "^8.0.0",
    "vue-persian-datetime-picker": "^2.10.1",
    "vue-sanitize": "^0.2.0"
  },
  "devDependencies": {
    "@quasar/app": "^1.6.2",
    "@quasar/quasar-app-extension-dotenv": "^1.0.1",
    "@types/lodash": "^4.14.150",
    "@types/moment-jalaali": "^0.7.5",
    "@types/node": "^10.17.15",
    "@typescript-eslint/eslint-plugin": "^2.17.0",
    "@typescript-eslint/parser": "^2.17.0",
    "babel-eslint": "^10.0.1",
    "eslint": "^6.8.0",
    "eslint-config-standard": "^14.1.0",
    "eslint-loader": "^3.0.3",
    "eslint-plugin-import": "^2.14.0",
    "eslint-plugin-node": "^11.0.0",
    "eslint-plugin-promise": "^4.0.1",
    "eslint-plugin-standard": "^4.0.0",
    "eslint-plugin-vue": "^6.1.2",
    "vue-property-decorator": "^8.3.0",
    "vuex-class": "^0.3.2",
    "vuex-module-decorators": "^0.11.0"
  },
  "engines": {
    "node": ">= 10.18.1",
    "npm": ">= 6.13.4",
    "yarn": ">= 1.21.1"
  },
  "browserslist": [
    "last 1 version, not dead, ie >= 11"
  ],
  "resolutions": {
    "@babel/parser": "7.7.5"
  }
}

项目昨日可正常构建,今日突然失败,已尝试用yarn和npm重新安装依赖,问题未解决。

解决方案

这个错误的核心原因是htmlparser2新版本使用了Webpack 4不支持的ES语法(export * as),而当前使用的@quasar/app版本(1.6.2)基于Webpack 4,无法处理该语法。以下是三种可行的解决方法:

  • 方案一:锁定htmlparser2兼容版本
    在package.json的resolutions字段中添加对htmlparser2的版本锁定,指定一个兼容Webpack 4的版本:
"resolutions": {
  "@babel/parser": "7.7.5",
  "htmlparser2": "^6.1.0"
}

然后重新安装依赖:

# npm用户
npm install
# yarn用户
yarn install
  • 方案二:升级Quasar相关依赖
    如果项目允许,升级@quasar/app和quasar到Quasar v1的最新稳定版(或迁移到v2),新版本的Quasar使用Webpack 5,可支持新ES语法。注意升级前备份项目:
npm install @quasar/app@latest quasar@latest
  • 方案三:修改Webpack配置转译依赖
    在项目根目录的quasar.conf.js中,扩展Webpack配置,添加对htmlparser2的转译规则:
build: {
  extendWebpack(cfg) {
    cfg.module.rules.push({
      test: /\.js$/,
      include: /node_modules\/htmlparser2/,
      use: {
        loader: 'babel-loader',
        options: {
          presets: ['@babel/preset-env']
        }
      }
    })
  }
}

同时安装所需的依赖包:

npm install babel-loader @babel/preset-env --save-dev

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 18:35:11