Node.js 如何使用Nodejs在Google App Engine上访问process.env

Node.js 如何使用Nodejs在Google App Engine上访问process.env,node.js,google-app-engine,Node.js,Google App Engine,我正在谷歌应用程序引擎上使用react 如文件中所述: 我可以访问以下环境变量: Environment variable Description GAE_APPLICATION The ID of your App Engine application. GAE_DEPLOYMENT_ID The ID of the current deployment. GAE_ENV The App Engine environment. Set to standard. GAE_INSTANC

我正在谷歌应用程序引擎上使用react

如文件中所述:

我可以访问以下环境变量:

Environment variable    Description
GAE_APPLICATION The ID of your App Engine application.
GAE_DEPLOYMENT_ID   The ID of the current deployment.
GAE_ENV The App Engine environment. Set to standard.
GAE_INSTANCE    The ID of the instance on which your service is currently running.
GAE_MEMORY_MB   The amount of memory available to the application process, in MB.
GAE_RUNTIME The runtime specified in your app.yaml file.
GAE_SERVICE The service name specified in your app.yaml file. If no service name is specified, it is set to default.
GAE_VERSION The current version label of your service.
GOOGLE_CLOUD_PROJECT    The GCP project ID associated with your application.
NODE_ENV    Set to production when your service is deployed.
PORT    The port that receives HTTP requests.
当我在google app engine上部署我的应用程序并打印process.env console.log(process.env)时,我只有:

NODE_ENV: "production"
PUBLIC_URL: ""
在文档中明确地写了“以下环境变量由运行时设置”,但没有一个环境变量



有什么不对?

它所指的“以下环境变量由运行时设置”适用于由
节点执行的应用程序。因此,从express.js应用程序运行时打印的
process.env
包含这些环境变量,因为在部署react.js应用程序时,您将以
node.bin/www
node server.js
的身份执行代码,而不是以
react scripts start
的身份执行代码。在这种情况下,create react app负责设置环境变量。或者,您可以根据
创建react app
规范。

所谓“以下环境变量由运行时设置”的含义适用于
节点执行的应用程序。因此,从express.js应用程序运行时打印的
process.env
包含这些环境变量,因为在部署react.js应用程序时,您将以
node.bin/www
node server.js
的身份执行代码,而不是以
react scripts start
的身份执行代码。在这种情况下,create react app负责设置环境变量。或者,您可以根据
创建react app
规范。

我假设您使用的是标准环境,对吗?不,我使用的是flex环境。然后环境变量列表是,您引用的是标准环境。尽管如此,你的问题仍然存在。谢谢你给我指出正确的文档,但是环境变量仍然是我在问题上报告的两个。我假设你使用的是标准环境,对吗?不,我使用的是flex环境然后环境变量列表是,您引用的是用于标准环境的。尽管如此,你的问题仍然有效。谢谢你给我指出正确的文档,但是环境变量仍然是我在问题上报告的两个。它写在谷歌的文档中,我在问题中链接了。在google app engine中,环境在nodejs中运行。是的,实际上可以通过部署一个基本的应用程序内引擎并打印
process.env
来观察。因此在理论上,由于
create-react-app
使用
npm
,它在技术上仍然使用nodejs运行时,因此应该像expressjs-app一样接收GAE设置的环境变量。事实上,事情要复杂得多
create react app
依赖于许多
依赖项,如Webpack、Babel等。可能是
env
的配置由其中一个决定,优先于GAE。因此没有什么可做的?从我的发现来看,这根本不可能<代码>创建反应应用程序
为了简单和实用,创建了大量抽象。例如,在浏览器环境中没有环境变量<代码>进程.env
在浏览器环境中不存在;它是特定于node.js的。由于它不进行服务器端渲染,因此无法在运行时注入env变量。相反,Webpack将在生成期间用字符串值替换所有出现的
process.env
。本质上,React中的env vars与Node中的不同,因为它只是一个抽象。因此,这与其说是appengine的错误,不如说是库的一个限制(无论是否有意)。随后,任何其他云计算服务提供商,如AWS或Heroku,都会出现这个问题。正如我在问题中链接的那样,它写在谷歌的文档中。在google app engine中,环境在nodejs中运行。是的,实际上可以通过部署一个基本的应用程序内引擎并打印
process.env
来观察。因此在理论上,由于
create-react-app
使用
npm
,它在技术上仍然使用nodejs运行时,因此应该像expressjs-app一样接收GAE设置的环境变量。事实上,事情要复杂得多
create react app
依赖于许多
依赖项,如Webpack、Babel等。可能是
env
的配置由其中一个决定,优先于GAE。因此没有什么可做的?从我的发现来看,这根本不可能<代码>创建反应应用程序
为了简单和实用,创建了大量抽象。例如,在浏览器环境中没有环境变量<代码>进程.env
在浏览器环境中不存在;它是特定于node.js的。由于它不进行服务器端渲染,因此无法在运行时注入env变量。相反,Webpack将在生成期间用字符串值替换所有出现的
process.env
。本质上,React中的env vars与Node中的不同,因为它只是一个抽象。因此,这与其说是appengine的错误,不如说是库的一个限制(无论是否有意)。随后,任何其他云计算服务提供商(如AWS或Heroku)都会出现此问题。