node.js - REACT_APP_* 与 NODE_PATH 环境变量

标签 node.js reactjs environment-variables create-react-app

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

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

最佳答案

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

您可以在此处查看添加它的代码: 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 然后在您的 React 代码中您可以这样写: import Button from 'button' 而不是 import Button from '../../../button' 只要您在其中一个文件夹中有该模块 srcsrc/componentssrc/containers 因为 create-react 应用程序将在这些文件夹中查找 button 模块.实际上,您不会像使用 REACT_APP_* 变量那样在 React 代码中使用 NODE_PATH 变量。基本上,它会告诉您的应用到哪里寻找模块。

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

这:const GRAPHQL_URI = REACT_APP_GRAPHQL_URI

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

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

关于node.js - REACT_APP_* 与 NODE_PATH 环境变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51289998/

相关文章:

node.js - $dateToString 和 $subString 没有显示正确的日期

python - 将 Python 的 os.environ 重置为命令 shell 的默认值的正确方法

Python:导出后 os.environ KeyError

node.js - 以 es6 或更高版本为目标时,无法将外部模块编译成 amd 或 commonjs

mysql - react js mysql : TypeError: Cannot read property 'affectedRows'

javascript - Mongoose如何查看正在生成哪个mongodb查询,数据库没有返回任何内容

java - 在 pom.xml 中找不到 maven-antrun-plugin

javascript - 如何将上下文绑定(bind)到事件处理程序,以便将事件和更多参数传递给处理程序函数

javascript - 在react-redux中使用async/await进行异步请求

python - 使用 app.yaml 在 GAE 中安全地存储环境变量