2017-07-07 59 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 
 
};