如何在package.json脚本中读取.env文件的环境变量?
解决package.json脚本中加载.env环境变量的问题
方法1:修正env-cmd的使用方式
先确保安装env-cmd依赖:
npm install env-cmd --save-dev # 或pnpm pnpm add env-cmd -D
修正.env文件格式
env-cmd会把引号解析为变量内容的一部分,所以去掉变量值的引号:
MY_URL=example.com MY_BROWSER=chrome USER=xyz PASSWORD=123
修改package.json脚本
注意完整拼接URL,并且正确调用env-cmd:
"myscript": "env-cmd pnpx playwright codegen https://$MY_URL"
如果是Windows系统,PowerShell环境变量引用格式为%MY_URL%,可以用cross-env实现跨平台兼容:
pnpm add cross-env env-cmd -D
脚本改为:
"myscript": "cross-env env-cmd pnpx playwright codegen https://%MY_URL%"
方法2:使用dotenv-cli替代env-cmd
dotenv-cli兼容性更好,安装后直接使用:
pnpm add dotenv-cli -D
脚本写法:
"myscript": "dotenv -- pnpx playwright codegen https://$MY_URL"
方法3:Node.js脚本中转(兜底方案)
如果工具类方案无效,可写一个简单的Node.js脚本作为中转,比如创建run-codegen.js:
require('dotenv').config(); const { execSync } = require('child_process'); const targetUrl = `https://${process.env.MY_URL}`; execSync(`pnpx playwright codegen ${targetUrl}`, { stdio: 'inherit' });
安装dotenv依赖:
pnpm add dotenv -D
package.json脚本改为:
"myscript": "node run-codegen.js"
常见排查点
- 确认.env文件放在项目根目录,与package.json同级
- 检查.env内变量名拼写、无多余空格
- 环境变量引用符匹配当前shell:Linux/macOS用
$VAR,Windows cmd用%VAR%,PowerShell用$env:VAR
内容的提问来源于stack exchange,提问作者Ger Mc
相关产品推荐
相关产品推荐

