Skip to content

作者

novlan1

2025.8.25

发布失败常见原因

1. pnpm-lock.yaml 未同步

报错如下:

 ERR_PNPM_OUTDATED_LOCKFILE  Cannot install with "frozen-lockfile" because pnpm-lock.yaml is not up to date with <ROOT>/package.json
Note that in CI environments this setting is true by default. If you still need to run install in such cases, use "pnpm install --no-frozen-lockfile"
    Failure reason:

解决方法:

  • 本地执行 pnpm i,然后提交 pnpm-lock.yaml

查看示例流水线

2. 本地构建问题

构建失败具体原因就非常多了,比如下面这种 src/component 没更新的:

下面是小程序下使用了不支持的语法:

下面是类型错误导致的编译失败:

示例流水线

  1. 文件问题
  2. 语法问题
  3. 类型错误

解决方法:

  • 本地解决问题,执行 npm run build 或者 npm run build:mp 等命令,没问题后提交

3. 分支名不合法

如果分支名中包含“零宽空格”,会导致发布失败。

下面的这个分支名称,就包含了“零宽空格”,在某些 IDE 下不可见,复制到其他地方后可见。

sh
feature/story-map-​whitelist​

这种“零宽空格”在 base64.encode 时会失败,即 btoa,报错如下:

The string to be encoded contains characters outside of the Latin1 range

解决方法:

  • 使用不包含“零宽空格”的新分支,重新发布

4. 内存溢出

报错如下:

[1125357:0x5ba7c80]    35259 ms: Scavenge 2029.3 (2079.8) -> 2024.7 (2098.1) MB, 9.01 / 0.00 ms  (average mu = 0.622, current mu = 0.479) allocation failure; 


<--- JS stacktrace --->

FATAL ERROR: Reached heap limit Allocation failed - JavaScript heap out of memory
----- Native stack trace -----

 1: 0xb8ced1 node::OOMErrorHandler(char const*, v8::OOMDetails const&) [/root/.nvm/versions/node/v20.18.0/bin/node]
 2: 0xf06460 v8::Utils::ReportOOMFailure(v8::internal::Isolate*, char const*, v8::OOMDetails const&) [/root/.nvm/versions/node/v20.18.0/bin/node]
 3: 0xf06747 v8::internal::V8::FatalProcessOutOfMemory(v8::internal::Isolate*, char const*, v8::OOMDetails const&) [/root/.nvm/versions/node/v20.18.0/bin/node]
 4: 0x11182e5  [/root/.nvm/versions/node/v20.18.0/bin/node]
 5: 0x1130168 v8::internal::Heap::CollectGarbage(v8::internal::AllocationSpace, v8::internal::GarbageCollectionReason, v8::GCCallbackFlags) [/root/.nvm/versions/node/v20.18.0/bin/node]
 6: 0x1106281 v8::internal::HeapAllocator::AllocateRawWithLightRetrySlowPath(int, v8::internal::AllocationType, v8::internal::AllocationOrigin, v8::internal::AllocationAlignment) [/root/.nvm/versions/node/v20.18.0/bin/node]
 7: 0x1107415 v8::internal::HeapAllocator::AllocateRawWithRetryOrFailSlowPath(int, v8::internal::AllocationType, v8::internal::AllocationOrigin, v8::internal::AllocationAlignment) [/root/.nvm/versions/node/v20.18.0/bin/node]
 8: 0x10e4a66 v8::internal::Factory::NewFillerObject(int, v8::internal::AllocationAlignment, v8::internal::AllocationType, v8::internal::AllocationOrigin) [/root/.nvm/versions/node/v20.18.0/bin/node]
 9: 0x1540896 v8::internal::Runtime_AllocateInYoungGeneration(int, unsigned long*, v8::internal::Isolate*) [/root/.nvm/versions/node/v20.18.0/bin/node]
10: 0x7f5493ed9ef6

解决方法有多种,可以在之前的 build 命令前加上 cross-env NODE_OPTIONS=--max_old_space_size=8192,如:

diff
- "build": "vue-cli-service build",
+ "build": "cross-env NODE_OPTIONS=--max_old_space_size=8192 vue-cli-service build",

如果是 Vue2 项目,可以参考这里,修改 vue.config.js 配置。

js
const vueBaseConfig = getWebpackBaseConfig({
  isUseVueLoader: true,
  isVue3: false,
  useXSS: true,
});

module.exports = merge(someConfig, {
  chainWebpack: (config) => {
    config.plugin('fork-ts-checker').tap((args) => {
      args[0].memoryLimit = 8192; 
      return args;
    });
  },
});

查看示例流水线

5. “微信小程序CI”蓝盾插件

2025.9.15 更新

browserslist 这个生态包在周末进行了不符合 semver 语义的破坏性升级(v4.26.0),造成一些报错,类似这个 issue:https://github.com/browserslist/browserslist/issues/904

锁定 v4.25.4 可解决,“微信小程序CI”蓝盾插件最新版本支持。

查看示例流水线