Javascript 节点0.10中未定义Process.domain

Javascript 节点0.10中未定义Process.domain,javascript,node.js,express,Javascript,Node.js,Express,我开始使用域,并尝试了几个Express域中间件包: 根据第一个文档的使用说明,我应该可以访问process.domain,但它没有定义 我基本上是在app.js中这样做的 var express = require('express'), domains = require('express-domain-middleware'); var app = exports.app = express(); app.use(domains); 在控制器中: exports.index = f

我开始使用域,并尝试了几个Express域中间件包:

根据第一个文档的使用说明,我应该可以访问
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
};
给出了什么?

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

express.use(domain);
我不知道你的应用程序是如何构造的,但
应用程序的顺序通常是使用


你的
app.get('/someurl',yourcontroller.index)
应该放在
app.use(domain)

好的-这是因为我的中间件中有一个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)
  }));
});

参考:

符号“进程”必须来自某个地方。@Pointy
process
是节点中的全局变量environment@Mohsen好了,我是对的:)这是我的想法,但我有express。使用(域)作为我创建应用程序后的第一个中间件。路线排在名单的最后一位。我可以在中间件的代码中console.log并查看它是否被正确调用,以及在我的路由之前。您可以深入
express domain middleware
并查看它在哪里分配
process.domain
。不要害怕进入
node\u模块
。发现是猫鼬——下面的答案。process.domain由活动域上的节点自动分配。现在把域名放在货架上——如果没有猫鼬的支持,重新编码所有内容将是一项艰巨的工作。“我会等到它出现。”亚苏很高兴你找到了解决办法。请随意选择您自己的答案作为正确答案