Tag: 环境variables

dotenv是否与十二因子应用程序相冲突?

我已经阅读了关于十二因子应用程序的configuration – 第三节,并在NodeJS中寻找方法。 似乎大多数人推荐dotenv将configuration存储在环境variables中。 但是,似乎dotenv与十二因子应用程序相矛盾,如下所示: 另一种configuration方法是使用configuration文件,这些configuration文件不会被检入版本控制,比如Rails中的config / database.yml。 与使用常量进行代码回购相比,这是一个巨大的进步,但仍然存在一些弱点:很容易错误地检查configuration文件到回购站; configuration文件分散在不同的地方和不同的格式,使得很难在一个地方看到和pipe理所有的configuration。 此外,这些格式往往是语言或框架的具体情况。 十二个因素的应用程序商店configuration在环境variables(通常缩写为env vars或env)。 环境variables很容易在不改变任何代码的情况下进行部署。 不像configuration文件,他们不小心被检入代码回购的机会很less; 与自定义configuration文件或其他configuration机制(如Java系统属性)不同,它们是与语言和操作系统无关的标准。 理解这个说法,似乎使用dotenv,你会创build一个configuration文件.env然后将它们作为环境variables导出。 这不会违反十二因子应用程序,因为.env文件可能会意外检查到代码回购?

使用app.get('env')设置环境特定的configuration

我的问题涉及这个问题上的一个旧的答案,但有一个小的修改。 我会尽量保持简单。 假设我的文件夹结构如下 |– controllers |– File.js |– and many more… |– routes.js |– app.js |– config.js |– env.json (same as one in the old answer) 相关文件包含 app.js const routes = require('./routes'); app.set('env', process.env.NODE_ENV || 'production'); // set the environment app.use('/', routes); routes.js const FileController = require('./controllers/File'); let router = require('express').Router(); router.get('/files', FileController.getFiles); // … […]

在json文件中使用Node envs

我使用dotenv声明我的ENV,然后我将M导入到主文件,但我有一个JSON文件需要proccess.env但我不想硬编码的API密钥 有没有一种方法到env到json文件没有硬编码他们? 由此 { "accessKeyId": "ACCESS_KEY", "secretAccessKey": "SECRET_KEY", "region": "us-east-1" } 对此 { "accessKeyId": proccess.env.ACCESS_KEY, "secretAccessKey": "SECRET_KEY", "region": "us-east-1" }

节点JS:访问JSON如果string中的variables名?

我有json对象如下 var data = { datetime:{ time:"9:30 AM", date:"24-09-2017" } } 和我有stringvar element = "data.datetime.time"如何访问使用元素的时间。

清除Node.js全局variables属性

我的问题不是关于“内存泄漏”,而是关于node.js(expressjs)应用程序的“内存清除”。 我的应用程序应该在服务期间为内存中的快速查找维护一些对象。 在启动应用程序之后(一两天),everthing似乎很好,直到突然我的Web客户端查找对象,因为它已被清除(未定义)。 我怀疑JavaScript GC(垃圾收集)。 但是,正如您在psedu-code中看到的那样,我将对象分配给node.js“global”variables属性,以防止GC清除它们。 请给我一些线索是什么导致了这个问题。 非常感谢您提供的build议〜 我的node.js环境是node.js 0.6.12,expressjs 2.5.8和VMWare cloudfoundry节点托pipe。 这是我的app.js伪代码: var express = require("express"); var app = module.exports = express.createServer(); // myMethods holds a set of methods to be used for handling raw data. var myMethods = require("myMethods"); // creates node.js global properties referencing objects to prevent GC from purging them global.myMethods […]

NodeJS:在前端脚本中使用环境variables

我正在编写一个socket.io应用程序,而且每次我推送到heroku时,都不得不在我的前端scripts.js文件中排队。 var socket = io.connect('http://localhost'); 至 var socket = io.connect('http://ersatz-elephant-1337.herokuapp.com/'); 我知道我可以使用process.env.VAR在后端访问这些variables,但我想知道是否有任何方式来编程决定哪些使用我的前端脚本? 我宁愿把脚本放在静态的地方,但也许这是不可能的? 编辑:我不是真的在后端寻找解决scheme…我正在寻找一种方式,我的/public/scripts.js文件可以连接到正确的事情。 我想可能唯一的方法是通过在server.js为前端脚本文件指定一些特殊的东西,而不是静态地提供它,但如果是这样,那么这就是我正在寻找的指令,而不是如何实际访问env vars在服务器上。 对不起,有什么困惑!

为什么NODE_DEBUG = fs环境variables被设置,但不工作?

有关fs模块的Node.js文档说( https://nodejs.org/api/fs.html#fs_file_system ): 要跟踪原始调用站点,请设置NODE_DEBUG环境variables: 以及一个设置fs envvariables的例子: $ env NODE_DEBUG=fs node script.js fs.js:66 throw err; ^ Error: EISDIR, read at rethrow (fs.js:61:21) at maybeCallback (fs.js:79:42) at Object.fs.readFile (fs.js:153:18) at bad (/path/to/script.js:2:17) at Object.<anonymous> (/path/to/script.js:5:1) <etc.> 但是,如果我在命令行中设置了fs envvariables,或者在脚本中使用了process.env ,则variables已设置但不起作用,不显示任何跟踪: 预先在命令行中: $ env NODE_DEBUG=fs // set before running a script $ node script.js // doesn't bring the trace […]

export NODE_ENV =生产不会改变gulpfile.js中的process.env.NODE_ENV

我试图设置环境variables$ NODE_ENV为“生产” export NODE_ENV=production 但是当我尝试运行我的吞噬任务时,它说variables是未定义的: if((process.env.NODE_ENV).trim().toLowerCase() !== 'production') { ^ TypeError: Cannot read property 'trim' of undefined at Object.<anonymous> (/Users/mmarinescu/Projects/gulpTutorial/gulpfile.js:15:26) at Module._compile (module.js:435:26) at Object.Module._extensions..js (module.js:442:10) at Module.load (module.js:356:32) at Function.Module._load (module.js:311:12) at Module.require (module.js:366:17) at require (module.js:385:17) at Liftoff.handleArguments (/usr/local/lib/node_modules/gulp/bin/gulp.js:116:3) at Liftoff.<anonymous> (/usr/local/lib/node_modules/gulp/node_modules/liftoff/index.js:192:16) at module.exports (/usr/local/lib/node_modules/gulp/node_modules/liftoff/node_modules/flagged-respawn/index.js:17:3) 如果我echo $NODE_ENV ,则显示生产关键字。 在这个例子中,我的gulp设置如下: var devBuild = ((process.env.NODE_ENV).trim().toLowerCase() […]

JavaScript / Node.JS中的variables声明和初始化

我在JavaScript中看到了不同的编码格式/样式的build议。 其中之一就是省略, 在每一行的结尾,除非在JSON对象中使用。 另一种是只使用var来声明variables并缩进第二个variables。 我通过了这两个build议,这使我有一个有趣的错误,我想深入了解这个问题。 初始化 var max = 2 arr = [] wait = 10 //Preset arr with simple object {id:i} for(var i = 0; i < max; i++) arr.push({id:i}) 主function function simulate(idIn, callback) { var msg = idIn id = idIn logger.info(idIn, 'simulate', JSON.stringify({id:id, idIn:idIn})) setTimeout(function() { var obj = {id:id, idIn:idIn} logger.info(idIn, […]

NPM – 脚本 – 它们是如何工作的?

我无法理解脚本如何在package.json中运行,并希望对我们的新手有所了解。 这是否是由加载了各种dependencies节点运行的bash脚本? 如果是的话,那么它是如何处理JavaScript代码?