2017-07-07 146 views
0

我有这个小的浏览器问题。我想要一个自制的模块并立即运行。Javascript Browserify,需要功能并运行它

主文件:

(function() { 
    require('./modules/initScrollReveal')(); 
    require('./modules/initChart')(); 
    require('./modules/initDatamap')(); 
    })(); 

模块:

exports.initChart = function() { 
    // do stuff 
}; 

现在我在require('./modules/initScrollReveal')();

Browserify获得与消息 "require(...) is not a function“错误通过Watchify运行与

watchify public-modules/res/js/main.js -o public/res/js/main.js 
+0

尝试单独做到这一点:'要求( './模块/ initScrollReveal'); initScrollReveal();' – Kaddath

+0

@Kaddath然后它的只是'initScrollReveal不是一个函数' – Wlad

+0

啊是的你是对的,在browserify需要返回对象,如果你可以做'var a = require('thing');',它应该是有效的做'require('thing')();' – Kaddath

回答

0

module.exports允许在需要时将initChart函数调用为函数。简单地设置导出将不允许导出函数,因为节点导出对象module.exports引用。

变化

exports.initChart = function() { 
    // do stuff 
}; 

module.exports = function initChart () { 
    // do stuff 
}; 

更多细节:browserify-handbook#exports

+0

这是有趣的,在我做的uglifyjs的browserified版本中,我找到了两种语法,我想知道这种差异的细节,因为我的uglify的作品,所以这两个似乎是有效的..我甚至有直接出口的要求,因为这样'exports.inherits =要求('继承');'..我很好奇 – Kaddath

+0

它的工作非常感谢你。它非常有趣,第一个版本仍然在Node中工作,但不在Browserify中。 – Wlad

+1

@Kaddath我添加了一个链接以获取更多信息。 – taha

0

尝试:

(function() { 
 
    require('./modules/initScrollReveal').initScrollReveal(); 
 
    require('./modules/initChart').initChart(); 
 
    require('./modules/initDatamap').initDatamap(); 
 
    })();

如果你的模块看起来像:

exports.initScrollReveal= function() { 
 
    // do stuff 
 
}; 
 

 
exports.initChart = function() { 
 
    // do stuff 
 
}; 
 

 
exports.initDatamap= function() { 
 
    // do stuff 
 
};