我们的JavaScript资源刚刚退出,所以我对前端开发一无所知,需要让我的UI站起来。我试图在javascript中使用环境变量,似乎有100种不同的方法可以做到这一点。
我所知道的是这是一个react / node应用程序。我用npm run start
开始。它需要我在.bash_profile XREFS_BACK_URL
中定义的端点。我以为我可以使用process.env.XREFS_BACK_URL
,但显然必须在某个文件中定义?我不知道文件或文件的位置。
很抱歉这么无能为力 - 这只是落在了我的腿上,我必须迅速把它搞定!
更新
我在根目录中创建了一个.env
文件。这是一行:
REACT_APP_XREFS_BACK_URL=http://localhost:8080
在我的代码中,我尝试使用它:
var endpoint = process.env.REACT_APP_XREFS_BACK_URL;
console.log("endpoint is " + endpoint);
但控制台显示endpoint
为UNDEFINED
。
我的package.json在这里:
{
"name": "bulletin-board",
"version": "0.0.1",
"private": true,
"devDependencies": {
"babel-jest": "^22.4.1",
"babel-preset-env": "^1.6.1",
"babel-preset-react": "^6.24.1",
"jest": "^22.4.2",
"react-scripts": "0.2.1",
"react-test-renderer": "^16.2.0",
"webpack": "^4.6.0"
},
"dependencies": {
"font-awesome": "^4.7.0",
"match-sorter": "^2.2.1",
"namor": "^1.0.1",
"npm": "^6.0.0",
"react": "^15.2.1",
"react-dom": "^15.2.1",
"react-draggable": "^2.2.0",
"react-table": "^6.8.2"
},
"scripts": {
"start": "react-scripts start",
"build": "react-scripts build",
"eject": "react-scripts eject",
"test": "jest"
},
"jest": {
"scriptPreprocessor": "<rootDir>/node_modules/babel-jest",
"moduleFileExtensions": [
"js",
"json",
"jsx"
],
"moduleNameMapper": {
"^.*[.](jpg|JPG|gif|GIF|png|PNG|less|LESS|css|CSS)$": "EmptyModule"
},
"preprocessorIgnorePatterns": [
"/node_modules/"
],
"unmockedModulePathPatterns": [
"<rootDir>/node_modules/react",
"<rootDir>/node_modules/react-dom",
"<rootDir>/node_modules/react-addons-test-utils",
"<rootDir>/EmptyModule.js"
]
},
"eslintConfig": {
"extends": "./node_modules/react-scripts/config/eslint.js"
}
}
答案 0 :(得分:1)
您的应用是使用create-react-app
制作的。以下是添加/引用环境变量的文档:https://github.com/facebook/create-react-app/blob/master/packages/react-scripts/template/README.md#adding-custom-environment-variables
在名为.env
的根文件夹中创建一个文件,其内容为:
REACT_APP_XREFS_BACK_URL=put_whatever_here
然后通过以下方式在JavaScript中访问此变量:
process.env.REACT_APP_XREFS_BACK_URL
答案 1 :(得分:0)
不确定,如果它真的适合你,CNDyson,但我认为它可能对像我这样的新手有帮助:
npm install --save dotenv
.env
文件REACT_APP_**VARIABLE_NAME** = dont forget about REACT_APP
process.env.REACT_APP_**VARIABLE_NAME**
强烈建议浏览这些链接:
https://create-react-app.dev/docs/adding-custom-environment-variables/ - 官方文档
https://www.npmjs.com/package/dotenv - dotenv
答案 2 :(得分:0)
问题在于您通常希望访问托管应用程序的服务器上存在的环境变量。
使用所描述的解决方案,您将永远无法做到docker run --env FOO="value of foo" my-org/my-app
然后在应用程序中访问 FOO
,例如 process.env["FOO"]
。
create-react-app
捆绑运行 yarn build
时定义的环境变量。
例如,如果您想访问 docker 容器中定义的环境变量,请查看:react-envs