在 Node v8(v8.9.3 或更高版本)中,commonjs 需要模块创建新上下文

In Node v8 (v8.9.3 or above), commonjs require module create new context

我们正在使用助手 (Dust.js) 开发模板库,助手库在代码库中具有以下设计模式。

(function(root, factory) {
  if (typeof define === 'function' && define.amd && define.amd.dust === true) {
    define(['dust-linkedin'], factory);
  } else if (typeof exports === 'object') {
    module.exports = factory(require('dust-linkedin'));
    // module.exports = factory; // <<--- This is working on v8
  } else {
    factory(root.dust);
  }
}(this, function (dust) {
 ...
});

在节点 v6 中,exporting factory(require('dust-linkedin')) 工作正常,但在切换到节点 v8 (v8.9.3) 后,我们看到 helpers 没有被执行,改变 factory(require('dust-linkedin'))factory 在助手库中,事情开始工作了。

在节点 v8 中,当 require('dust-linkedin') 时,它是否会创建一个新的 context/object,因为我们失去了所有的助手? commonjs require 行为有任何变化吗?

解决方案已在 PR 中修复https://github.com/krakenjs/festucam/pull/4