Tag: node.js

在Node.js中,如何从我的其他文件“包含”function?

比方说,我有一个名为app.js的文件。 很简单: var express = require('express'); var app = express.createServer(); app.set('views', __dirname + '/views'); app.set('view engine', 'ejs'); app.get('/', function(req, res){ res.render('index', {locals: { title: 'NowJS + Express Example' }}); }); app.listen(8080); 如果我在“tools.js”中有一个函数呢? 我如何将它们导入到apps.js中使用? 或者…我应该把“工具”变成一个模块,然后需要它吗? <<看起来很难,我宁愿做tools.js文件的基本导入。

CORS:当凭证标志为true时,不能在Access-Control-Allow-Origin中使用通配符

我有一个设置涉及 前端服务器(Node.js,domain:localhost:3000)<—>后端(Django,Ajax,域名:localhost:8000) 浏览器< – webapp < – Node.js(服务应用程序) 浏览器(webapp) – > Ajax – > Django(服务ajax POST请求) 现在,我的问题在于CORS设置,Web应用程序使用Ajax调用后端服务器。 在铬,我不断得到 当凭证标志为真时,不能在Access-Control-Allow-Origin中使用通配符。 也不能在Firefox上工作。 我的Node.js设置是: var allowCrossDomain = function(req, res, next) { res.header('Access-Control-Allow-Origin', 'http://localhost:8000/'); res.header('Access-Control-Allow-Credentials', true); res.header('Access-Control-Allow-Methods', 'GET,PUT,POST,DELETE'); res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept"); next(); }; 在Django中,我正在使用这个中间件 Web应用程序提出请求: $.ajax({ type: "POST", url: 'http://localhost:8000/blah', data: {}, xhrFields: { withCredentials: true }, […]

如何在Node.js Web应用程序中pipe理MongoDB连接?

我正在使用MongoDB的node-mongodb-native驱动写一个网站。 我有一些关于如何pipe理连接的问题: 对于所有请求只使用一个MongoDB连接是否足够? 有没有任何性能问题? 如果没有,我可以设置一个全局连接在整个应用程序中使用吗? 如果不是,请求到达时打开一个新的连接,并且在处理请求时closures它是否好? 打开和closures连接是否昂贵? 我应该使用全局连接池吗? 我听说驱动程序有一个本机连接池。 这是不错的select吗? 如果我使用连接池,应该使用多less个连接? 还有其他的事情我应该注意到吗?

在Node.js中读取环境variables

有没有一种方法可以读取Node.js代码中的环境variables? 就像Python的os.environ['HOME'] 。

所有的JavaScriptcallback是asynchronous的吗? 如果没有,我怎么知道哪些是?

我很好奇所有的JavaScriptcallback是否是asynchronous的,或者只是在某些情况下是这种情况。 此外,我确定JavaScript代码asynchronous(或使用asynchronousJavaScript的方法)是什么使浏览器和nodejs不同,所以我想知道在每种情况下构成真正的asynchronousJavaScript。 我的印象是,在下面的情况下,我实际上没有编写asynchronous代码。 function addOne(value){ value = value + 1; return value; } function simpleMap(values, callback){ for(i = 0; i < values.length; i++){ val = values[i]; val = callback(val); values[i] = val; } return values; } newValues = simpleMap([1,2,3], addOne); 但是,例如,我知道jQuery的AJAXfunction是真正的asynchronous(不考虑现在可用的承诺)。 什么是使jQuery的AJAXasynchronous? 它是否涉及XHR请求,并且在浏览器中,所有的XHR请求都是asynchronous的? 我对nodejs环境有同样的问题。 如果节点中的某些东西像文件I / O,process.nextTick,setTimeout或setInterval那样只能是asynchronous的? 为什么当我用mongodb / mongoose进行数据库调用时,是asynchronous的? 幕后发生了什么事情呢? 是由环境预先确定的asynchronous“情况”? 或者有没有办法使自己的function真正的asynchronous,而不是利用环境的非常具体的function(如xhr,节点中的文件io,process.nexttick等)?

摩卡/柴期望不会抛出抛出的错误

我有问题让柴的expect.to.throw工作在我的node.js应用程序的testing。 testing在抛出的错误上保持失败,但是如果我试着包装testing用例,并捕获和声明被捕获的错误,它就可以工作。 是否expect.to.throw不工作像我认为应该或什么? it('should throw an error if you try to get an undefined property', function (done) { var params = { a: 'test', b: 'test', c: 'test' }; var model = new TestModel(MOCK_REQUEST, params); // neither of these work expect(model.get('z')).to.throw('Property does not exist in model schema.'); expect(model.get('z')).to.throw(new Error('Property does not exist in model schema.')); […]

使用Node.js执行命令行二进制文件

我正在将一个CLI库从Ruby移植到Node.js。 在我的代码中,我需要时执行几个第三方的二进制文件。 我不知道如何最好的在Node中做到这一点。 下面是Ruby中的一个例子,我打电话给PrinceXML将文件转换为PDF: cmd = system("prince -v builds/pdf/book.html -o builds/pdf/book.pdf") 什么是节点中的等效代码?

setImmediate与nextTick

Node.js版本0.10今天发布并引入了setImmediate 。 API更改文档build议在执行recursionnextTick调用时使用它。 从MDN看来,它与process.nextTick非常相似。 什么时候应该使用nextTick ,什么时候应该使用setImmediate ?

我如何传递命令行参数?

我有一个用Node.js编写的Web服务器,我想用特定的文件夹启动。 我不知道如何访问JavaScript中的参数。 我像这样运行节点: $ node server.js folder 这里server.js是我的服务器代码。 Node.js的帮助说这是可能的: $ node -h Usage: node [options] script.js [arguments] 我将如何访问JavaScript中的这些参数? 不知何故,我无法在网上find这些信息。

package.json中的tilde(〜)和caret(^)有什么区别?

在我升级到最新的稳定node和npm ,我尝试了npm install moment –save 。 它用caret(^)前缀保存package.json的条目。 以前,这是一个tilde(~)前缀。 为什么这些更改是在npm ? tilde(~)和caret(^)之间的区别是什么? 有什么比别人更有优势?