我在Heroku中设置了几个配置变量:baseURL、NODE_ENV和PROD_MONGODB中的一个或多个。然而,试图访问我的应用程序中的配置变量baseURL,它出现了undefined。执行console.log(process.env);以查看哪些变量可用,得到以下结果:{NODE_ENV: "development", PUBLIC_URL: ""}为什么我为Heroku设置的一些变量没有显示或无法访问?我是否遗漏了一些明显的信息?
baseURL
NODE_ENV
PROD_MONGODB
undefined
console.log(process.env);
{NODE_ENV: "development", PUBLIC_URL: ""}
ar7v8xwq1#
问题是,您已经设置了Heroku配置变量,这对您生产非常有利,但是您的本地应用程序无法访问这些配置变量。您需要为本地环境变量创建另一个.env文件。1.在项目的根目录下创建一个文件夹,并将其命名为config1.在config文件夹下创建一个文件并将其命名为dev.env1.您可以在此处使用key=value结构设置环境变量。1.将config添加到.gitignore文件例如,通过在dev.env文件中设置PORT=3000,您可以在本地运行应用程序时访问端口3000,还可以让Heroku将其端口设置为任意值。在您的应用程序中,您只需要使用process.env.YOUR_KEY,在本例中为process.env.PORT。设置环境vars可能是一个巨大的痛苦,因为每个操作系统都有它的方式。你可以使用一个npm节点模块env-cmd来克服这个问题。首先,通过以下步骤将其安装为一个开发依赖项:
.env
config
dev.env
key=value
.gitignore
PORT=3000
process.env.YOUR_KEY
process.env.PORT
npm i env-cmd --save-dev
现在打开package.json文件和blow脚本,在开发中使用它:
"scripts": { "start": "node src/app.js", "dev": "env-cmd ./config/dev.env nodemon src/index.js" }
我假设您正在使用nodemon,并且在src目录中有一个index.js文件。如果需要,您可以查看Heroku配置变量的答案。https://stackoverflow.com/a/55233621/7274342
x4shl7ld2#
在没有看到任何代码的情况下,假设您正确地设置了配置变量,并且假设您试图通过Web而不是通过本地主机访问它们,我会猜测您试图访问客户端的配置变量。您必须将它们引入服务器端,然后在客户端相应地分发它们。
2条答案
按热度按时间ar7v8xwq1#
问题是,您已经设置了Heroku配置变量,这对您生产非常有利,但是您的本地应用程序无法访问这些配置变量。您需要为本地环境变量创建另一个
.env
文件。1.在项目的根目录下创建一个文件夹,并将其命名为
config
1.在config文件夹下创建一个文件并将其命名为
dev.env
1.您可以在此处使用
key=value
结构设置环境变量。1.将
config
添加到.gitignore
文件例如,通过在
dev.env
文件中设置PORT=3000
,您可以在本地运行应用程序时访问端口3000,还可以让Heroku将其端口设置为任意值。在您的应用程序中,您只需要使用process.env.YOUR_KEY
,在本例中为process.env.PORT
。设置环境vars可能是一个巨大的痛苦,因为每个操作系统都有它的方式。你可以使用一个npm节点模块env-cmd来克服这个问题。首先,通过以下步骤将其安装为一个开发依赖项:
现在打开package.json文件和blow脚本,在开发中使用它:
我假设您正在使用nodemon,并且在src目录中有一个index.js文件。
如果需要,您可以查看Heroku配置变量的答案。https://stackoverflow.com/a/55233621/7274342
x4shl7ld2#
在没有看到任何代码的情况下,假设您正确地设置了配置变量,并且假设您试图通过Web而不是通过本地主机访问它们,我会猜测您试图访问客户端的配置变量。您必须将它们引入服务器端,然后在客户端相应地分发它们。