【问题标题】:Meteor with dotenv package for environment variables: "process" is not defined带有用于环境变量的 dotenv 包的 Meteor:未定义“进程”
【发布时间】:2022-01-12 07:24:05
【问题描述】:
我正在使用 Meteor 包 dotenv 为我的 API 密钥添加安全性:https://github.com/okgrow/meteor-dotenv
按照说明,我:
1. 在我的根目录下创建了一个名为“.env”的文件
2.在文件中输入“THIS_KEY=BLAH12345”样式的两个key
3.做了一个meteor调用函数返回process.env.THIS_KEY供客户端使用。
我收到 Referenceerror: process.env is not defined。对于普通节点,那里有很多答案,但对于 Meteor 来说不是这样。我是否错误地命名了我的文件?需要使用 Meteor 命令来激活某些东西吗?
【问题讨论】:
标签:
meteor
environment-variables
referenceerror
env
【解决方案1】:
我遇到了同样的问题,并通过放置
使其工作
var secretThing = process.env.SECRET_THING
服务器端,在if(Meteor.isServer)里面,然后把变量作为参数传给需要用到secret的东西的方法。
Meteor.call("apiCall", secretThing);
那么接收方法是这样的:
apiCall: function (secretThing) {
console.log(secretThing);
}
【解决方案2】:
DotEnv 旨在从 .env 文件中读取环境变量,该文件通常位于 NodeJS 应用程序的根目录中。
DotEnv 只是通过process.env 将它在 .env 文件中找到的变量与其他主机系统环境变量一起使用
问题是,我不相信流星支持 .env 文件。这可能是由于应用程序的年龄。我个人认为他们应该优先解决这个问题。
在流星应用程序中使用process.env 的唯一方法是设置要在主机系统上使用的变量。如果你使用的是 linux,它会是这样的
export DB_PASSWORD=12345
然后,您应该能够在应用程序运行时使用 process.env 读取 DB_PASSWORD。
// You can only run process.env in server code
if (Meteor.isServer) {
const myDBPassword = process.env.DB_PASSWORD
}