[英]How to append a line of JavaScript (rather than an exteral .js file)?
[英]How can I set environment variables in my Javascript file rather than the command line?
我正在编写一个连接到 Google Sheets API 的程序。 理论上我可以在 shell 中设置环境变量,但这不是我想要做的。 我试过了:
var authorizationDetails = {
"type": "service_account",
"project_id": "myapp",
"private_key_id": "xxxxx",
"private_key": "-----BEGIN PRIVATE KEY-----...---END PRIVATE KEY-----\n",
"client_email": "myproj@myproj.iam.gserviceaccount.com",
"client_id": "yyyyy",
"auth_uri": "https://accounts.google.com/o/oauth2/auth",
"token_uri": "https://oauth2.googleapis.com/token",
"auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
"client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/myapp%40myapp.iam.gserviceaccount.com"
}
process.env.GOOGLE_CLOUD_PROJECT = 'myProject';
process.env.GOOGLE_APPLICATION_CREDENTIALS = authorizationDetails;
我得到
UnhandledPromiseRejectionWarning: Error: The file at [object Object] does not exist, or it is not a file. ENOENT: no such file or directory, lstat '/mnt/c/Users/me/desktop/myfolder/myproj/myfolder/[object Object]'
at Object.realpathSync (fs.js:1461:7)
at GoogleAuth._getApplicationCredentialsFromFilePath
环境变量需要在主函数之前设置。 如何在 node.js 脚本本身中设置环境变量?
包 dotenv 将从项目中的 .env 文件中提取。
我认为您的问题是您试图将环境变量分配给 Javascript 对象。 它必须是一个字符串。 正如您从错误输出中看到的那样,Google API 能够看到您将 GOOGLE_APPLICATION_CREDENTIALS 变量设置为什么。 由于您的问题具体是如何从 JS 内部而不是外部执行此操作,请尝试以下操作:
process.env.GOOGLE_APPLICATION_CREDENTIALS = "/my/file/with/credentials.json";
我编辑了我的答案,因为GOOGLE_APPLICATION_CREDENTIALS 需要文件路径而不是 JSON 字符串。 但是,您没有将环境变量分配给非字符串化的 JavaScript 对象仍然是正确的。
您需要做的是安装一个名为dotenv
的包,它允许您在自己的专用文件中创建环境变量:
npm i dotenv
链接到包 → https://www.npmjs.com/package/dotenv
安装后,请尽早在项目中使用dotenv
包,如下所示:
// Main.js
require('dotenv').config()
// code below
...
然后在您的项目的根文件夹(您的package.json
所在的位置)创建一个名为.env
的文件,然后您可以创建这样的环境变量:
// .env
NEW_VAR="hello"
ANOTHER_ONE="DJ Khaled"
就像在任何代码 lang 中用.env
声明一个变量一样, NAME=VALUE
你的 env 变量的名称应该都是大写和 use_snake_case,它不需要只是良好的实践。
加上代码中的大写看起来很酷 ( ▀ ͜͞ʖ▀) (ง ͠° ͟ل͜ ͡°)ง
然后你可以像使用任何环境变量一样使用它们:
console.log(process.env.NEW_VAR)
如果您想将.env
文件放在根文件夹之外的其他位置,则可以在包含dotenv
包时执行此dotenv
//Main.js
require('dotenv').config({path: __dirname + 'path/to/env/file/.env'})
...
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.