我使用create-react-app
作为我的React项目(已退出),并且我已在package.json
中配置了代理。但我不想在此文件中提交我的凭据。所以我使用npm config set my_user xxxx
添加到了npm。
我也可以在〜/ .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"
}
},
这不起作用。用户名和密码不在代理请求中使用。
但是如果我将其添加到"脚本":
"hello": "echo $npm_config_my_user $npm_config_my_pass
并运行npm run hello
,两者都被回应......
有什么想法吗?这应该有用还是我做错了?
THX!的Gijs
答案 0 :(得分:1)
我没有弄清楚$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;
或者你可以循环遍历proxySetting中的对象,并设置那里的每个对象的凭据,如果你有多个API要代理:
Object.keys(proxySetting).forEach(function(proxy) {
proxySetting[proxy].headers.username = process.env.PROXY_USERNAME;
proxySetting[proxy].headers.password = process.env.PROXY_PASSWORD;
});
注意:scripts/start.js
是由create-react-app