Node.js NodeJS-为什么当前域在Promise中未定义?

Node.js NodeJS-为什么当前域在Promise中未定义?,node.js,promise,try-catch,Node.js,Promise,Try Catch,我创建域并运行它。现在,当域进入过程时。域指向当前活动域。但后来我跑开了,得到了一些奇怪的东西 'use strict'; var domainCreate = require('domain').create; var domain = domainCreate(); domain.requestId = 1; domain.run(function() { console.log(process.domain === domain); // true console.lo

我创建域并运行它。现在,当域进入
过程时。域
指向当前活动域。但后来我跑开了,得到了一些奇怪的东西

'use strict';

var domainCreate = require('domain').create;

var domain = domainCreate();
domain.requestId = 1;
domain.run(function() {
    console.log(process.domain === domain); // true
    console.log(process.domain.requestId); // 1
    Promise.resolve().then(function() {
        console.log(process.domain === domain); // false!!!
        console.log(process.domain.requestId); // throw new TypeError('Cannot read property 'requestId' of undefined')
    }).catch(function(err) {
        console.error(err.stack);
    });
});

为什么
process.domain
在承诺链中变得未定义?

本机承诺和域不会混合。有一个问题提到()了:

现在V8的本机承诺已经实现了,我还没有深入研究过,但如果有必要对其进行修补以与域一起工作,我也不会感到惊讶

该线程()中的最新评论表明,这仍然是NodeV6的一个问题(事实就是如此)


对该问题的一条评论建议使用第三方promises实现,例如,可能会更好(您的示例代码可以使用它),但考虑到域被认为有点黑客行为(因此,我认为您可能应该考虑在根本不使用域的情况下重新实现代码。

根据Node.js文档,模块“domain”的稳定性级别为0,不推荐使用。以另一种方式更好地处理错误

目前没有其他方法。