Deprecated: parse_url(): Passing null to parameter #1 ($url) of type string is deprecated in /www/wwwroot/blog_qqvbc_com/usr/plugins/Access/Access_Core.php on line 339

Deprecated: parse_url(): Passing null to parameter #1 ($url) of type string is deprecated in /www/wwwroot/blog_qqvbc_com/usr/plugins/Access/Access_Core.php on line 392

Deprecated: parse_url(): Passing null to parameter #1 ($url) of type string is deprecated in /www/wwwroot/blog_qqvbc_com/usr/plugins/Access/Access_Core.php on line 394
报错解读 ERR_PNPM_IGNORED_BUILDS pnpm 9 + 供应链安全策略,禁止自动运行依赖包的 build 脚本 - Joyber 的博客

image.png

报错解读

ERR_PNPM_IGNORED_BUILDS
pnpm 9+供应链安全策略,禁止自动运行依赖包的build脚本,部分包需要编译构建,被拦截,导致 pnpm dev 内部触发的install失败退出码1。

提示文字也给出方案:

Run "pnpm approve-builds" to pick which dependencies should be allowed to run scripts.

方案1:官方推荐(执行这个命令)

pnpm approve-builds

交互式选择需要允许构建的包,截图里列表:
@parcel/watcher core-js es5-ext esbuild tlbs‑map‑vue vue‑demi
全部勾选允许,完成后再执行

pnpm dev

方案2:一次性全局放行(快速调试,服务器本地开发用)

pnpm dev --ignore-builds=false

或者执行install阶段直接允许所有构建脚本

pnpm install --ignore-builds=false
pnpm dev

方案3:写到 .npmrc 永久关闭该拦截(当前项目)

echo "ignore-builds=false" >> .npmrc

然后再启动

pnpm dev

补充说明

  1. 这个不是依赖损坏,是pnpm新版本安全防护,防止恶意包执行脚本。
  2. 生产环境不建议直接全局关闭,优先用pnpm approve‑builds按需放行。
  3. 如果上面操作完依旧报错,删除锁文件与node_modules重来:

    rm -rf node_modules pnpm-lock.yaml
    pnpm install --ignore-builds=false
    pnpm dev

标签: none

添加新评论