2016-12-14 20 views
1

我最近使用.env文件設置了一個簡單的項目,並在我的代碼中用process.env。[變量名稱]調用了env變量,它完全可以工作,不需要將dotenv包添加到我的項目中。Dotenv仍然是6.x.x節點的必備軟件包嗎?

節點是否併入了本機?我嘗試了谷歌搜索,但它沒有提供任何有用的信息,所以我有點困惑。認爲這很容易確認或否認。

這裏是我的 '應用':

// Load the SDK and UUID 
 
var AWS = require('aws-sdk'); 
 
var uuid = require('node-uuid'); 
 

 
// Create an S3 client 
 
var s3 = new AWS.S3({ 
 
    region: 'us-east-1', 
 
    accessKeyId: process.env.AWS_ACCESS_KEY_ID, 
 
    secretAccessKey: process.env.AWS_SECRET_ACCESS_KEY 
 
}); 
 

 
// Create a bucket and upload something into it 
 
var bucketName = 'node-sdk-sample-' + uuid.v4(); 
 
var keyName = 'hello_colorado.txt'; 
 

 
s3.createBucket({Bucket: bucketName}, function() { 
 
    var params = {Bucket: bucketName, Key: keyName, Body: 'Coloradoical!'}; 
 
    s3.putObject(params, function(err, data) { 
 
    if (err) 
 
     console.log(err) 
 
    else 
 
     console.log("Successfully uploaded data to " + bucketName + "/" + keyName); 
 
    }); 
 
});

而我的package.json(不dotenv):

{ 
    "dependencies": { 
     "aws-sdk": ">= 2.0.9", 
     "node-uuid": ">= 1.4.1" 
    } 
} 

只是一個想法,可以說,它是關係到事實上,我正在從node simple.js的命令行運行我的應用程序?如果是這樣,你能解釋爲什麼嗎?

+0

不是我意識到的,我幾乎在每個項目中都使用'.env'文件。我認爲當你認爲它沒有添加軟件包的時候,可能會有其他的東西在起作用。 – dvlsg

+0

嗯我會傾向於相信你,但我的'應用程序'是簡單的。將發佈它的全部以及我的package.json – maxwell

+0

請確保您沒有任何全局定義的環境變量,或終端啓動應用程序。不能爲你說話,但我以前肯定犯過這個錯誤。 – dvlsg

回答

2

不,Node.js不會自動讀取.env文件。

對正在發生的事情可能的解釋:

  • 也許你正在使用已經在你的shell設置運行程序前的環境變量。

  • 也許您的AWS證書正在被您的機器以某種其他方式存儲/使用。 (根據我們的評論對話,這看起來像你的情況,但我包括其他的東西,以通常幫助其他人可能會看到類似的東西。)

  • 也許你正在加載的模塊之一是閱讀.env文件。


從@maxwell

建議的其他信息:

AWS CLI幫助頁面表明,對於配置值的優先順序是:

  • 命令行選項
  • 環境變量
  • 配置文件

這聽起來像是信息來自@maxwell的配置文件。

+0

是的 - 第二個是答案。也許在aws cli幫助頁面中找到我剛剛找到的這一行,並回答你的答案。 ' 優先 以上配置值有下列優先順序: O命令行選項 O環境變量 O配置文件 ' – maxwell

+0

添加的信息,謝謝。看看,讓我知道如果我搞砸了。 – Trott

+0

對我來說很不錯。 – maxwell

相關問題