2015-07-19 74 views
1

有人能告訴我我做錯了什麼嗎?客戶端節點模塊在瀏覽後不工作

我想在node.js下開發一個應用程序。我需要一個名爲自動完成的模塊,所以我做了

npm install -S autocomplete 

並且工作正常。 packages.json已更新,一切。

但我需要客戶端的自動完成功能。這個問題最流行的解決方案似乎是使用browserify,所以我安裝了這個全球性的,它似乎工作。

現在,根據一切我讀過,我應該能夠:

cd node_modules 
browserify autocomplete/index.js > bundle.js 
mv bundle.js ../public/lib/js/ 

,然後在視圖/ index.html的我應該能有

<script src="lib/js/bundle.js"> 

最後我應該可以說

var auto = new Autocomplete(); 

因爲自動完成對象的自動完成模塊中定義,這就是個如何e說明說實例化它。

但不幸的是我的瀏覽器說Autocomplete is not defined所以它顯然沒有得到消息。

上述有什麼問題?

回答

0

因此,事實證明,因爲自動完成未導出到全局範圍。在app.js在您使用自動填充文件中 試試這個,例如:

var Autocomplete = require('autocomplete'); 
var auto = new Autocomplete(); 

然後

browserify app.js > bundle.js 
mv bundle.js ../public/lib/js/ 
+0

感謝您的回覆,但不幸的是,這對我不起作用,因爲客戶端沒有定義「require」。這是另一個我知道已經寫了很多東西的問題,但到目前爲止我還沒有找到解決方案!如何定義客戶端使用的「require」? – nttaylor

+0

browserify將遞歸分析應用程序中的所有require()調用,以便構建一個可在單個

1

當您運行Browserify,將其創建爲standalone模塊:

browserify autocomplete/index.js --standalone Autocomplete > autocomplete.js 

我只是爲了簡單而改變名稱 - 隨便稱它。

然後,當您在瀏覽器中運行此應用程序時,應該可以使用new Autocomplete()

編輯 雖然這是可行的,但該模塊的文檔已丟失,而您正在閱讀文檔的模塊似乎已丟失。

當您可以使用已爲瀏覽器構建的typeahead之類的東西時,不需要去解決這個問題。

+1

謝謝你這個工作!我有點驚呆了,在閱讀有關browserify的幾個小時內,我從未讀過關於「standstand」標誌的消息。我想通常不需要?你能告訴我什麼是不同的「自動完成」,它是必要的? – nttaylor

+0

任何時候一個模塊只使用'module.exports',那麼瀏覽器就不知道該模塊被調用了什麼。這就是'--standalone'爲你做的。我現在正在用同樣的東西建立一個圖書館。隨時upvote :) –

+0

嗨,不幸的是,即使我能夠使用你的解決方案實例化對象,調用對象的方法給了另一個錯誤。我實例化了'auto = new Autocomplete()',但後來'auto.initialize(data)'產生了'Uncaught TypeError:getInitialElements不是函數'。有什麼想法嗎? – nttaylor

相關問題