REACT_APP_ *与NODE_PATH环境变量

Hah*_*olo 3 environment-variables node.js reactjs create-react-app

常规CRA环境变量(必须以REACT_APP_开头)和NODE_PATH变量(用于避免为导入使用相对路径,.. / .. / .. / foo等)之间有什么区别?

根据我的测试,除非使用以REACT_APP开头的变量,否则无法使用任何变量,那么如何像其他不以REACT_APP开头的变量那样忽略NODE_PATH变量?

Jef*_*eti 7

NODE_PATH可访问,因为它已添加到中的Webpack配置中react-scripts

您可以在此处看到添加它的代码:https : //github.com/facebook/create-react-app/blob/25184c4e91ebabd16fe1cde3d8630830e4a36a01/packages/react-scripts/config/env.js#L61

你会在该文件中,您也可以设定看到NODE_ENV你在(例如,运行的环境,这套developmentstaging等等)以及PUBLIC_URL

要回答有关差异的问题:

NODE_PATH允许您使用绝对路径进行导入。例如,您可以设置NODE_PATH为以下内容:NODE_PATH=src:src/components:src/containers然后在你的阵营代码,你可以写这样的事情:import Button from 'button'而不是import Button from '../../../button'只要你有一个模块在一个文件夹中srcsrc/components或者src/containers因为创建反应的应用程序将寻找button模块这些文件夹。您实际上不会像使用NODE_PATH变量那样在React代码中使用REACT_APP_*变量。基本上,它告诉您的应用程序在哪里寻找模块。

REACT_APP_* 变量在构建时使用我链接到的文件中的Webpack配置注入到您的应用程序中。

这个: const GRAPHQL_URI = REACT_APP_GRAPHQL_URI

变成这个: const GRAPHQL_URI = https://example.com

如果您的.env文件中有此文件:REACT_APP_GRAPHQL_URI = https://example.com

  • REACT_APP_testing=test 有效,但 NODE_PATH=src 不允许我导入 (2认同)