Process.domain在节点0.10中未定义

时间:2013-12-06 21:16:58

标签: javascript node.js express

我正在使用域名并尝试使用几个Express域中间件包:

https://github.com/brianc/node-domain-middleware https://github.com/baryshev/connect-domain

根据第一篇文章中的使用文档,我应该可以访问process.domain,但它未定义。

我基本上是在我的app.js

中这样做的
var express = require('express'),
domains = require('express-domain-middleware');

var app = exports.app = express();
app.use(domains);

在控制器中:

exports.index = function(req, res, next) {
  console.log(process.domain);  //undefined
};

是什么给出了?

2 个答案:

答案 0 :(得分:2)

您可能需要检查(使用console.log或断点)以确保在调用index方法之前发生此行:

express.use(domain);

我不知道你的应用是如何构建的,但app.use的顺序通常就是这样。

您的app.get('/someurl', yourcontroller.index)应该在app.use(domain)之后。

答案 1 :(得分:0)

好的 - 这是由于我的中间件中有一个Mongo调用。显然,所有数据库调用都必须被包装。

var d = domain.create();
d.run(function () {
  client.query('...', d.intercept(function (rows) {
  // ... use rows (note, first arguments error was "intercepted" by the domain)
  }));
});

参考:https://github.com/felixge/node-mysql/issues/308