2016-01-13 65 views
0

我正在使用燒杯筆記本,並且想使用一些外部節點模塊 - 但由於燒杯不會將系統路徑更改爲當前活動文件的目錄,因此我嘗試包括stream-filter會遇到錯誤:如何在燒杯筆記本中加載節點模塊?

Error: Cannot find module 'stream-filter' 
Error: Cannot find module 'stream-filter' 
    at Function.Module._resolveFilename (module.js:336:15) 
    at Function.Module._load (module.js:286:25) 
    at Module.require (module.js:365:17) 
    at require (module.js:384:17) 
    at eval (eval at processCode (/opt/homebrew-cask/Caskroom/beaker/1.4.2-1-ge55c059/Beaker.app/Contents/Resources/dist/config/plugins/eval/node/app/app.js:45:23), :5:14) 
    at processCode (/opt/homebrew-cask/Caskroom/beaker/1.4.2-1-ge55c059/Beaker.app/Contents/Resources/dist/config/plugins/eval/node/app/app.js:45:18) 
    at /opt/homebrew-cask/Caskroom/beaker/1.4.2-1-ge55c059/Beaker.app/Contents/Resources/dist/config/plugins/eval/node/app/app.js:32:28 
    at callbacks (/opt/homebrew-cask/Caskroom/beaker/1.4.2-1-ge55c059/Beaker.app/Contents/Resources/dist/config/plugins/eval/node/app/node_modules/express/lib/router/index.js:164:37) 
    at param (/opt/homebrew-cask/Caskroom/beaker/1.4.2-1-ge55c059/Beaker.app/Contents/Resources/dist/config/plugins/eval/node/app/node_modules/express/lib/router/index.js:138:11) 
    at pass (/opt/homebrew-cask/Caskroom/beaker/1.4.2-1-ge55c059/Beaker.app/Contents/Resources/dist/config/plugins/eval/node/app/node_modules/express/lib/router/index.js:145:5) 

我想知道如何解決這個問題。即使流篩選器安裝在node_modules的同一目錄中,我也試過process.chdir('/Users/akivalipshitz/Developer/Computational_Linguistics')無效。

那麼人們如何利用節點模塊

回答

0

在該節點代碼eval'd你的情況

/opt/homebrew-cask/Caskroom//beaker/1.4.2-1-ge55c059/Beaker.app/Contents/Resources/dist/config/plugins/eval/node/app/app.js 

所以require()查找在node_modules文件夾中的模塊那裏,然後遞歸上下文沿着父文件夾(see docs)。

一個解決方案(如果你只工作在一個項目或在所有項目中經常使用這個模塊),將有安裝模塊:

cd /opt/homebrew-cask/Caskroom//beaker/1.4.2-1-ge55c059/Beaker.app/Contents/Resources/dist/config/plugins/eval/node/app/ 
npm install stream-filter 

另一個(醜陋的)做法可能是建立你需要的一個長相對路徑()。你的情況是這樣的:

require('../../../../../../../../../../../../Users/akivalipshitz/Developer/Computational_Linguistics'); 

兩種情況下,就意味着你的代碼無法移植到另一燒杯實例。但是,至少在提出更好的解決方案之前,這可能會讓您沿着原型設計。

0

截至撰寫本文時,Beaker的當前版本允許您從GUI右側導入npm modules。只需單擊notebookLanguage ManagerJavascript,然後將模塊名稱輸入到Loaded Libraries。燒杯從npm registry自動完成。

這適用於electron客戶端和雲託管版本。

language manager screenshot