.NET环境下虚拟机安装Playwright执行playwright install报错如何解决
问题描述
尝试在部署目标虚拟机上安装Playwright以运行UI测试时,首先执行了以下CLI全局安装命令:
# 全局安装Playwright CLI dotnet tool install --global Microsoft.Playwright.CLI playwright install
但执行playwright install等Playwright CLI相关命令时,收到如下报错:
Couldn't find project using Playwright. Ensure a project or a solution exists in C:\users\myuser, or provide another path using -p.
(中文含义:找不到使用Playwright的项目,请确认C:\users\myuser路径下存在项目或解决方案,或使用-p参数指定其他路径)
询问如何在虚拟机上正确安装Playwright。
现有局限说明
目前Playwright的.NET NuGet包设计存在局限性:虽然API使用体验优异,但部署难度较高,存在以下问题:
- 无法直接在部署服务器上通过CLI默认流程安装浏览器
- 包会向项目及所有引用该包的项目中添加3份总大小200MB的Node.js运行时
- 难以阻止这些运行时文件被打包到发布产物中,单次构建产物体积很容易达到1GB
- 暂不支持自定义Node.js或Playwright的存储路径
解决方案
报错修复方法
上述报错是因为Playwright CLI默认会检测当前目录下是否存在引用了Playwright NuGet包的.NET项目,没有检测到就会抛出错误,可通过两种方法解决:
- 指定项目路径执行安装:如果虚拟机上已经存在引用了Playwright的.NET项目,执行命令时添加
-p参数指定项目/解决方案路径即可,示例:playwright install -p 你的项目路径/项目名.csproj - 无项目强制安装:如果不需要依赖.NET项目,可添加
--force参数强制安装浏览器,直接跳过项目检测,示例:# 安装所有支持的浏览器 playwright install --force # 仅安装指定浏览器,节省空间,可选值:chromium、firefox、webkit playwright install chromium --force
部署体积优化方案
针对发布产物体积过大的问题,可通过以下配置优化:
- 在项目的.csproj文件中添加配置节点
<PlaywrightIncludeNodeRuntime>false</PlaywrightIncludeNodeRuntime>,禁止打包内置的Node.js运行时,前提是部署服务器上已经提前安装了符合版本要求的Node.js环境 - 发布时指定运行时标识,禁用不必要的运行时打包,示例命令:
dotnet publish -r win-x64 --self-contained false - 按需安装浏览器,不需要的浏览器不安装,可减少数百MB的占用空间
内容的提问来源于stack exchange,提问作者Liero
相关产品推荐
相关产品推荐

