2017-12-27 6 views
0

Wir arbeiten an Templating-Bibliothek mit Helfern (Dust.js), die Hilfsbibliothek hat unter Entwurfsmuster innerhalb der Codebasis.In Knoten v8 (v8.9.3 oder höher) benötigen commonjs modul create new context

(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) { 
... 
}); 

In Knoten v6, Export Fabrik (erfordern (‚staub linkedin‘)) funktioniert gut, aber nach dem Einschalten v8 (v8.9.3) zum Knoten und wir sehen Helfer werden nicht ausgeführt zu werden, ändert Fabrik (benötigt ('dust-linkedin')) bis fabrik in der helfer-library beginnen die dinge zu arbeiten.

In Knoten v8, wenn require ('dust-linkedin'), schafft es einen neuen Kontext/Objekt, aufgrund dessen wir alle unsere Helfer verlieren? Gibt es eine Änderung in Commonjs Verhalten erfordern?

+0

PR fixiert habe ich Dutzende von Bibliotheken verwendet, die die UMD-Muster verwenden. Es gab kein Problem, das sich von Knoten 6 zu Knoten 8 bewegte. Bitte bearbeiten Sie Ihre Frage, um genau zu beschreiben, was Sie erwarten und was stattdessen * passiert *. Wenn Sie eine Ausnahme erhalten, buchen Sie den vollständigen Stack-Trace. Eigentlich sollten Sie Ihre Frage bearbeiten, damit die Leute das Problem reproduzieren können ([mcve]). Der auskommentierte Code, den du sagst, funktioniert, macht nicht das Richtige. – Louis

+0

Danke Louis für Hinweise, wird die Frage ändern –

+0

Der Code von [Staub-Helfer] (https://github.com/linkedin/dustjs-helpers/blob/master/dist/dust-helpers.js) hat 'Modul .exports.registerWith = factory; 'nach' module.exports = factory (require ('dust-linkedin')); 'aber der Code, den du zeigst, hat ihn nicht. – Louis

Antwort

Verwandte Themen