Dotenv仍然是6.xx节点的必要软件包吗?

我最近使用.env文件设置了一个简单的项目,并用process.env。[variables名称]在我的代码中调用了envvariables,它完全工作,不需要将dotenv包添加到我的项目中。

节点是否并入了这个本地? 我尝试了谷歌search,但没有提供任何有用的信息,所以我有点困惑。 认为这很容易确认或否认。

这是我的'应用程序':

// 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的命令行运行我的应用程序的事实? 如果是这样,你能解释为什么吗?

不,Node.js不会自动读取.env文件。

可能的解释是:

  • 也许你正在使用的环境variables在运行程序之前已经在shell中设置好了。

  • 也许您的AWS证书正在被您的机器以其他方式存储/使用。 (基于我们的评论对话,这看起来就像是你的情况,但我还包括其他的东西,一般来说可以帮助其他人看到类似的东西。)

  • 也许你正在加载的模块之一是读取.env文件。


build议来自@maxwell的其他信息:

AWS CLI帮助页面指出configuration值的优先级为:

  • 命令行选项
  • 环境variables
  • configuration文件

这听起来像信息来自@maxwell的configuration文件。