Gij*_*ijs 5 environment-variables npm reactjs package.json create-react-app
我正在使用create-react-app我的 React 项目(已弹出),并且我已经在package.json. 但我不想将我的凭据提交到此文件中。所以我使用添加到 npm 中npm config set my_user xxxx。我也可以在我的 ~/.npmrc 中看到它们。
"proxy": {
"/api/v3/": {
"target": "https://ourstagingserver.nl/",
"changeOrigin": true,
"ssl": false,
"secure": false,
"headers": {
"username": "$npm_config_my_user",
"password": "$npm_config_my_pass"
}
},
Run Code Online (Sandbox Code Playgroud)
这是行不通的。代理请求中不使用用户名和密码。
但如果我将其添加到“脚本”中:
"hello": "echo $npm_config_my_user $npm_config_my_pass
Run Code Online (Sandbox Code Playgroud)
和 run npm run hello,两者都相呼应......
有任何想法吗?这应该有效还是我做错了?
谢谢!吉斯
我没有弄清楚为此目的使用$npm_config_变量,但我确实解决了在 create-react-app 中使用 ENV 变量作为代理的问题:
在scripts/start.js(下面第 62 行const proxySetting = require(paths.appPackageJson).proxy)中,添加以下内容:
proxySetting[Object.keys(proxySetting)[0]].headers.username = process.env.PROXY_USERNAME;
proxySetting[Object.keys(proxySetting)[0]].headers.password = process.env.PROXY_PASSWORD;
Run Code Online (Sandbox Code Playgroud)
或者,如果您有多个要代理的 API,您可以循环 proxySetting 中的对象并为其中的每个对象设置凭据:
Object.keys(proxySetting).forEach(function(proxy) {
proxySetting[proxy].headers.username = process.env.PROXY_USERNAME;
proxySetting[proxy].headers.password = process.env.PROXY_PASSWORD;
});
Run Code Online (Sandbox Code Playgroud)
注意:scripts/start.js是由create-react-app生成的文件