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

全局引入html-minifier-terser时minify返回Promise {<pending>}而非HTML怎么办?

问题根因
  1. 版本API不兼容:你本地项目安装的是v5及更早版本的html-minifier-terser,该版本的minify方法为同步API,可直接返回压缩后的HTML结果;你全局安装的是v6及以上版本,官方已将minify调整为异步API,调用后会返回Promise对象,需通过异步方式获取结果,该问题和npm link的使用无关,仅为版本不一致导致。
  2. await语法报错:await关键字仅可在被async标记的函数内部使用,你直接在普通函数内调用await不符合语法规范,因此触发报错。
解决方案

方案一:适配新版本异步API(推荐)

修改代码适配异步逻辑,修复后代码如下:

const fs = require('fs');
const pug = require('pug');
const { minify } = require('html-minifier-terser');

buildFile('index');

// 给函数添加async标记
async function buildFile(filename) {
  const fs_content = fs.readFileSync(`./data/page-${filename}.json`);
  const options = JSON.parse(fs_content);

  const compiledFunction = pug.compileFile(`./pugs/${filename}.pug`,{});
  const pug_html = compiledFunction(options);

  // 用await接收异步返回的压缩结果
  const result = await minify(pug_html, {
    removeAttributeQuotes: true,
    minifyJS: true,
    minifyCSS: true,
    removeComments: true,
    collapseWhitespace: true,
    collapseInlineTagWhitespace: true
  });
  console.log(result);
  // 后续对result的处理逻辑请放在当前函数内
}

方案二:降级全局包版本(无需修改原有代码)

如果你不想调整现有代码,可直接将全局安装的html-minifier-terser降级到v5版本,执行以下命令即可:

npm install -g html-minifier-terser@5

降级完成后原有代码可直接正常运行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 02:48:00