我正在尝试设置特定于构建的环境变量,以供我们使用 create-react-app 初始化的前端(非 NodeJS)ReactJS应用程序使用。< / p>
我在项目根目录中创建了三个文件: .env,.env.development,.env.production
出于测试目的,我将这些变量放在每个.env文件中:
REACT_APP_TEST_KEY=1
TEST_KEY=1
在渲染功能的app.js文件中,我添加了以下调试行:
console.log(`.env test key: ${process.env.REACT_APP_TEST_KEY}`);
console.log(`.env test key: ${process.env.TEST_KEY}`);
保存所有内容后,然后在命令行中运行 npm start 。
结果如下:
.env test key: undefined
.env test key: undefined
如您所见,我已经尝试对是否应该使用前置 REACT_APP 的问题进行套期保值。
我花了数小时来回顾有关该主题的各种博客文章,以及有关该主题的关于SO的两个最受欢迎的问题,但我仍然没有答案,特别是因为某些回答令人困惑是否仅在节点中有效而在浏览器中无效,以及create-react-app documentation尚未更新。
该文档btw清楚地表明,该文档应即开即用,而无需对package.json文件进行任何其他编辑。无论如何,我都将其包含在下面:
"name": "ui",
"version": "0.1.0",
"private": true,
"dependencies": {
"@testing-library/jest-dom": "^4.2.4",
"@testing-library/react": "^9.5.0",
"@testing-library/user-event": "^7.2.1",
"msal": "^1.3.0",
"react": "^16.13.1",
"react-dom": "^16.13.1",
"react-router-dom": "^5.1.2",
"react-scripts": "3.4.1",
"react-stl-obj-viewer": "^1.2.0"
},
"scripts": {
"start": "react-scripts start",
"build": "react-scripts build",
"test": "react-scripts test",
"eject": "react-scripts eject"
},
"eslintConfig": {
"extends": "react-app"
},
"browserslist": {
"production": [
">0.2%",
"not dead",
"not op_mini all",
"ie 11"
],
"development": [
"last 1 chrome version",
"last 1 firefox version",
"last 1 safari version",
"ie 11"
]
},
"devDependencies": {
"node-sass": "^4.13.1"
}
答案 0 :(得分:0)
您似乎在文档之后可能遗漏了一点,我尝试在本地存储库和codesandbox存储库上复制步骤以查看env变量。
它们似乎都在记录预期的env变量。
有关更多详细信息,请参见this codesandbox回购。如果您将代码托管在其他地方,请共享回购详细信息。
答案 1 :(得分:0)
感谢您的评论和建议。
事实证明这很愚蠢。我将.env文件放在 / src 中,而不是项目根目录中-当项目中有50个以上的文件并且Visual Studio Code中的文件夹查看器上的缩进很小时,这很容易完成。
将文件移到顶级文件夹(在 / src 上方)后,一切正常。
(在此处插入facepalm .gif)