[英]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.