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

AzureStaticWebApp升级Node/NPM后触发triggerUncaughtException问题求助

问题分析与解决方案

核心结论

添加node-options="--unhandled-rejections=warn"到.npmrc,或者NODE_OPTIONS=--unhandled-rejections=warn到.env无法解决你遇到的退出码1问题。

原因解析

从错误日志可以明确看到,崩溃的根源是权限不足:

[Error: EACCES: permission denied, mkdir '/root/.cache/ms-playwright']

这个错误导致Playwright的安装脚本install.js抛出未被捕获的异常,进而触发triggerUncaughtException使进程退出。而--unhandled-rejections=warn的作用只是将未处理的Promise拒绝从"终止进程"改为"输出警告",但它无法解决导致异常的根本原因——权限问题。


实际解决办法

1. 解决Playwright缓存目录权限问题

你可以通过以下几种方式规避目录权限限制:

  • 指定自定义缓存路径:在.env文件中添加环境变量,让Playwright将浏览器缓存存放在当前项目目录下(非root路径,权限可控):
    PLAYWRIGHT_BROWSERS_PATH=./.playwright-cache
    
    或者在安装命令中临时设置:
    PLAYWRIGHT_BROWSERS_PATH=./.playwright-cache npm install
    
  • 使用unsafe-perm参数安装:安装Playwright时添加--unsafe-perm=true,允许npm以root权限运行安装脚本(注意:此操作存在一定安全风险,仅在可信环境中使用):
    npm install playwright --unsafe-perm=true
    
  • 调整Azure Static Web Apps的运行用户:如果Azure允许,配置构建步骤使用非root用户执行npm命令,避免写入/root目录的权限问题。

2. 对等依赖冲突的长期修复

虽然你已通过legacy-peer-deps=true暂时解决了依赖警告,但建议长远来看:

  • 升级material-table到支持date-fns@2.x的版本(当前使用的material-table@1.69.3依赖的@date-io/date-fns@1.1.0仅支持date-fns@2.0.0-alpha.27)
  • 或调整@date-io/date-fns的版本,使其与项目中的date-fns@2.29.3兼容

关于Playwright测试用例的补充

你的测试用例本身没有明显问题,但需确保在权限问题解决后,Playwright能正常下载并启动浏览器。如果后续仍有异常,可检查ENV.BASE_URL是否正确配置,以及axeOption是否定义完整。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 01:30:51