Webdriver.io环境变量设置问题:PowerShell/pwsh终端无法生效
跨平台设置环境变量的解决方案
方法1:使用cross-env包(推荐)
cross-env是专门解决跨平台环境变量设置问题的工具,能在Windows、Linux、Mac上统一工作:
- 安装cross-env作为开发依赖:
npm install --save-dev cross-env - 修改package.json中的npm脚本:
"test:offline": "cross-env status=offline wdio run ./wdio.runner.conf.ts" - 执行命令保持不变:
npm run test:offline,现在在所有平台的终端(包括Windows PowerShell/pwsh)都能正常生效。
方法2:手动编写跨平台脚本(仅作参考)
如果不想额外安装依赖,可以利用npm scripts的平台区分特性,分别为不同系统写脚本:
- 在package.json中添加以下脚本:
这种方式需要额外维护平台判断逻辑,不如cross-env简洁可靠。"test:offline:unix": "env status=offline wdio run ./wdio.runner.conf.ts", "test:offline:win": "set status=offline && wdio run ./wdio.runner.conf.ts", "test:offline": "npm run test:offline:$(npm run --silent get-platform)", "get-platform": "node -e \"console.log(process.platform === 'win32' ? 'win' : 'unix')\""
问题根源
Unix系(Linux/Mac)终端支持env命令设置临时环境变量,但Windows PowerShell/CMD不识别该命令;Windows用set命令设置环境变量,却又不被Unix系支持。cross-env会自动根据当前系统选择正确的环境变量设置方式,无需手动区分平台。
内容的提问来源于stack exchange,提问作者Mohd Sijah
相关产品推荐
相关产品推荐

