2017-12-27 182 views
0

我们正在研究带有helpers(Dust.js)的模板库,该辅助库在代码库中具有以下设计模式。在Node v8(v8.9.3或更高版本)中,commonjs需要模块创建新的上下文

(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,出口工厂(要求(“尘埃LinkedIn”))工作正常,但切换到节点V8(v8.9.3)之后,我们看到的助手都没有得到执行,改变厂(require('dust-linkedin'))工厂里面的帮助程序库里,东西开始工作。

在节点v8中,require('dust-linkedin')是否会创建一个新的上下文/对象,因此我们失去了所有的助手? commonjs中有没有需要改变的行为?

+0

我已经使用了许多使用UMD模式的库。从节点6到节点8没有任何问题。请编辑您的问题以详细说明您希望发生的事情,以及发生了什么*而不是*。如果发生异常,请发布完整的堆栈跟踪。其实,你应该编辑你的问题,让人们重现问题([mcve])。你说的“有效”的注释代码并不是正确的。 – Louis

+0

感谢Louis指出,会修改这个问题 –

+0

[dust-helpers]的代码(https://github.com/linkedin/dustjs-helpers/blob/master/dist/dust-helpers.js)有'module .exports.registerWith = factory;''module.exports = factory(require('dust-linkedin'));'但你显示的代码没有它。 – Louis

回答

相关问题