Tag: 环境variables

JavaScript临时死区NodeJS 7.9.0性能下降?

我在其他问题中注意到使用let和varvariables声明时循环中的性能差异。 最初的问题是正确的回答,使用let for循环比较慢,因为let为每个迭代创build一个新的范围来保存let声明variables的值。 更多的工作要做,所以慢一点是正常的。 就像参考一样,我给出了代码和NodeJS(7.9.0)执行时间的结果: 请注意下面的所有javascript代码都是关于NodeJS版本7.9.0的 常规代码: 'use strict'; console.time('var'); for (var i = 0; i < 100000000; i++) {} console.timeEnd('var'); console.time('let'); for (let j = 0; j < 100000000; j++) {} console.timeEnd('let'); 输出: var: 55.792ms let: 247.123ms 为了避免在循环的每次迭代中对j额外的范围声明,我们在循环之前声明jvariables。 人们会期望,现在应该let循环的性能匹配variables之一。 但不是!!! 这是代码和结果供参考: 在循环之前使用let定义的代码: 'use strict'; console.time('var'); for (var i = 0; i < 100000000; i++) […]

设置Heroku环境variables而不重新启动应用程序

是否有可能设置一个Heroku环境variables而不重新启动应用程序? 我的应用通过OAuth2连接到不同的在线服务。 对于我连接的每个服务,我需要设置一个OAuth2 ID和密码。 为了让这些configurationvariables保持在我的代码之外,我使用了环境variables,并在process.env (node.js)中读取它们。 每次我添加一个新的服务到我的应用程序,我需要添加相应的环境variables的ID和秘密。 在推送最新的代码之前,我需要这样做,以便在下次启动新的服务连接时,可以使用OAuth2 ID和密码variables。 目前我的工作stream程如下: 使用Heroku工具带设置环境variables: heroku config:set <SERVICE>_ID=foo <SERVICE>_SECRET=bar 推最新的代码: git push heroku master 目前,这两个操作将重新启动应用程序。 我真的更喜欢第一个操作不重新启动应用程序,因为这些configurationvariables的变化不需要生效,直到步骤2)。 通过在步骤1)重新启动我的应用程序将经历不必要的停机时间。 那么,有没有办法来防止步骤1)重新启动应用程序?

Node.js和Multer – 在callback函数(req,res)中处理上传文件的目的地

我在Node.js是一个新手,最近我遇到了一个非常简单的问题。 我正在使用一个名为multer的模块,所以用户可以上传图片。 在我的networking应用程序中,所有的用户都有一个唯一的ID,我希望上传的图像被存储在一个根据他们的ID命名的目录中。 例: .public/uploads/3454367856437534 这是我的routes.js文件的一部分: // load multer to handle image uploads var multer = require('multer'); var saveDir = multer({ dest: './public/uploads/' + req.user._id, //error, we can not access this id from here onFileUploadStart: function (file) { return utils.validateImage(file); //validates the image file type } }); module.exports = function(app, passport) { app.post('/', saveDir, function(req, […]

在Node.js中,为什么我更喜欢键值存储在应用程序variables?

我正在Node.JS中开发一个支持Socket.IO的实时应用程序,在任何时候都会有几百个用户同时使用这个应用程序,我需要存储关于每个连接客户端的一些基本细节(并且删除这些细节客户端断开连接)。 我已经读过,使用键值存储(如Redis)是存储此类数据的首选。 为什么将数据存储在一个常规的应用内variables(对象,例如var connectedClientsData = {} )与将数据存储在Redis之类的键值存储中相比是不好的? 是否只支持扩展(例如,多个基于NodeJS的应用程序服务器可以连接到一个中央键值存储),还是存在一些更严重的缺陷?

如何设置环境variables来永久运行meteorjs

你如何设置环境variables来永远运行meteorjs? 如果我做出口并永远运行,像这样 export PORT=80 MONGO_URL=mongodb://localhost:3002/appname sudo forever -f start bundle/main.js 永远不会运行与节点meteorjs捆绑: /Users/../bundle/server/server.js:166 throw new Error("MONGO_URL must be set in environment"); ^ Error: MONGO_URL must be set in environment at run (/Users/../bundle/server/server.js:166:11) at Object.<anonymous> (/Users/../bundle/server/server.js:331:1) at Module._compile (module.js:456:26) at Object.Module._extensions..js (module.js:474:10) at Module.load (module.js:356:32) at Function.Module._load (module.js:312:12) at Module.require (module.js:364:17) at require (module.js:380:17) at Object.<anonymous> (/Users/../bundle/main.js:1:63) […]

全局variablesexpress node.js

我想获得variables,我可以在我的代码中find一个解决scheme,但这不是很干净 //environment.js module.exports.appName = "appName"; 和我的app.js var express = require('express') , routes = require('./routes/main') , user = require('./routes/user') , http = require('http') , path = require('path'); var app = express(); environment = require('./environment'); app.configure(function(){ app.set('port', process.env.PORT || 3000); app.set('views', __dirname + '/views'); app.set('view engine', 'jade'); app.use(express.favicon()); app.use(express.logger('dev')); app.use(express.bodyParser()); app.use(express.methodOverride()); app.use(express.cookieParser('your secret here')); app.use(express.session()); app.use(app.router); app.use(require('stylus').middleware(__dirname […]

NodeJS Express中每个请求的全局范围

我有一个基本的快递服务器,需要在每个请求处理期间存储一些全局variables。 更深入地说,请求处理涉及许多操作,需要存储在一个variables中,如global.transaction[] 当然,如果我使用global范围,每个连接将共享其事务的信息,我需要一个全局范围,因为我需要在执行期间从许多其他模块访问事务数组。 有关这个问题的任何build议? 我觉得是非常微不足道的,但我正在寻找复杂的解决scheme:) 非常感谢! 更新这是一个案例情况,更清楚。 每个请求我有3个模块( ModuleA , ModuleB , ModuleC ),它读取一个目录中的10个随机文件的内容。 我想跟踪每个请求读取的文件名列表,并发送res.write列表。 因此, ModuleA/B/C需要访问一个全局variables,但request_1 , request_2 , request_3等列表不必混淆。

vars在Nodejs中存储在哪里?

在任何Web浏览器中执行以下脚本都会导致'wee'被发送到控制台。 在节点中发送{} 。 var d = 'wee'; console.log(this.d); 我意识到,在这种情况下, this指的是导出对象。 我知道globalvariables,这不是我想要访问的。 另外,上面的脚本也没有在全局对象上设置d 。 它到底在哪里? 我可以通过console.log(d);明确地访问它console.log(d); 在上面的脚本中,但似乎没有任何理由,在一些非标准的空间里隐藏起来。 我也意识到,删除var会在global对象上声明d ,这是预期的行为,尽pipe在顶级作用域将其值存储在与“裸”variables不同的位置上的var看起来很愚蠢。 我的意思是,模块系统应该是防止全球污染的一种数字预防措施。 这里打破这个模式似乎很容易,做一些标准是很困难的。 d也没有在module对象上声明。 我没有理由为什么我要问这个问题,但我会回答第一个巨魔来与“但为什么你想做的durrrr”。 var d = {}; d.bleep = 'y'; var a = Object.keys(d); d.bloop = 'y'; d.blop = 'y'; var b = Object.keys(d); // c = b – a; var c = b.filter(function (item) { […]

Grunt环境variables不会被设置,直到所有的任务加载

我在我的项目中使用npm模块grunt env和load-grunt-config 。 grunt env为你处理环境variables,而load-grunt-config处理,为你加载gruntconfiguration。 你可以把你的任务放到其他文件中,然后load-grunt-config将它们捆绑在一起,并且有很多的负载并且为你消耗。 您也可以创build一个aliases.js文件,将您想要合并为一个任务的任务一个接一个地运行。 它与原始Gruntfile.js的grunt.registerTask任务类似。 我把所有的grunt任务放在一个单独的grunt/文件夹下,并且在主Gruntfile没有额外的子文件夹,正如Github上的load-grunt-config README.md所build议的那样。 这是我瘦身的Gruntfile : module.exports = function(grunt) { 'use strict'; require('time-grunt')(grunt); // function & property declarations grunt.initConfig({ pkg: grunt.file.readJSON('package.json') }); require('load-grunt-config')(grunt, { init: true, loadGruntConfig: { scope: 'devDependencies', pattern: ['grunt-*', 'time-grunt'] } }); }; 从理论上讲,将所有这些文件设置为load-grunt-config加载的正确方式应该与只有一个Gruntfile.js 。 不过,我似乎遇到了一点麻烦。 似乎在env任务下设置的环境variables不会为随后的grunt任务设置,而是由时间node处理其任务(在本例中为express服务器)设置。 grunt env任务: module.exports = { // environment variable values […]

在node.js中设置一个环境variables,然后在terminal中使用它?

那么我想在使用node.js执行js文件的过程中添加一个环境variables。 类似于:process.env ['VARIABLE'] ='value'; 我正在使用terminal运行使用模块的js文件,我可以设置variables,然后在js文件执行期间使用它,但我想设置variables使用“process.env”,然后当执行结束,我想用在terminal,或在另一个JS进程。 我知道可以使用child_process.exec,并使用SET(Windows)或EXPORT(Mac和Linux),但只是问如何可能,可能是可能的,或者使用哪个devise或过程来添加它,只是使用“process.env”。 在此先感谢,伙计们。