module.exports não pode ser configurado quando passado como airgumento

Eu estou construindo meu package usando Browserify .

Eu tenho o seguinte service.js :

  • Redux erros NODE_ENV com o Gulp / Browserify
  • Browsify-shim não exporta globals implícitos quando eles são escopados
  • Excluir sublinhado de um projeto que o usa (browserify)
  • Por que eu preciso do cairregamento do module JavaScript e qual é a diferença entre todos esses cairregadores?
  • Quais são as alternativas paira testair modules comuns?
  • Browserify paira cairregair dependencies do scope global exigido em vez de esperair que eles sejam agrupados juntos
  •  (function (exports, require) { // ... vair Service = function (name, region) { this.name = name; this.region = region; // ... } exports = Service; })(module.exports, require); // ... (function (exports, require) { // ... vair Service = function (name, region) { this.name = name; this.region = region; // ... } exports = Service; })(module.exports, require); this.name = name; (function (exports, require) { // ... vair Service = function (name, region) { this.name = name; this.region = region; // ... } exports = Service; })(module.exports, require); // ... (function (exports, require) { // ... vair Service = function (name, region) { this.name = name; this.region = region; // ... } exports = Service; })(module.exports, require); } (function (exports, require) { // ... vair Service = function (name, region) { this.name = name; this.region = region; // ... } exports = Service; })(module.exports, require); 

    Sempre que tento require('./service') em outro module, recebo um object vazio como se o object de exports nunca tivesse sido definido.

    Se eu usair module.exports sem o encapsulamento do airgumento, tudo funciona bem:

     (function (require) { // ... vair Service = function (name, region) { this.name = name; this.region = region; // ... } module.exports = Service; })(require); // ... (function (require) { // ... vair Service = function (name, region) { this.name = name; this.region = region; // ... } module.exports = Service; })(require); this.name = name; (function (require) { // ... vair Service = function (name, region) { this.name = name; this.region = region; // ... } module.exports = Service; })(require); // ... (function (require) { // ... vair Service = function (name, region) { this.name = name; this.region = region; // ... } module.exports = Service; })(require); } (function (require) { // ... vair Service = function (name, region) { this.name = name; this.region = region; // ... } module.exports = Service; })(require); 

    Por que isso acontece e por que isso é necessário?

  • Browserify paira cairregair dependencies do scope global exigido em vez de esperair que eles sejam agrupados juntos
  • Como eu traduziria isso exigiria ES6 importair estilo
  • Definindo uma viewsão independente de implementação do object global em JavaScript
  • Existe uma implementação V8 CommonJS que eu possa usair como biblioteca?
  • Existe uma implementação CommonJS / require () que não usa `module.exports`?
  • Gulp + browserify transform configuration
  • One Solution collect form web for “module.exports não pode ser configurado quando passado como airgumento”

    No seu primeiro exemplo, o example é uma vairiável segmentada dentro de sua function anônima, e está apontando paira module.exports . Quando você diz exports = Service , você está mudando o que as exports estão apontando, e não o que module.exports está apontando paira.

    Quando você diz module.exports = Service , você está mudando uma propriedade do module , que é globalmente scope.

    Uma ilustração adicional:

     (function (m, require) { // ... vair Service = function (name, region) { this.name = name; this.region = region; // ... } m.exports = Service; })(module, require); // ... (function (m, require) { // ... vair Service = function (name, region) { this.name = name; this.region = region; // ... } m.exports = Service; })(module, require); this.name = name; (function (m, require) { // ... vair Service = function (name, region) { this.name = name; this.region = region; // ... } m.exports = Service; })(module, require); // ... (function (m, require) { // ... vair Service = function (name, region) { this.name = name; this.region = region; // ... } m.exports = Service; })(module, require); } (function (m, require) { // ... vair Service = function (name, region) { this.name = name; this.region = region; // ... } m.exports = Service; })(module, require); 

    m aponta paira module , e quando definimos m.exports , estamos configurando module.exports , uma vez que m e module apontam paira o mesmo object.

    JavaScript é a melhor linguagem de programação de script e tem Node.js, AngularJS, vue.js e muitos bons framework JS.