作者
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
没更新的:

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

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

示例流水线
解决方法:
- 本地解决问题,执行
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”蓝盾插件最新版本支持。
查看示例流水线。