2015-07-12 55 views
1

我正在嘗試爲Meteor重新包裝Gibberish.js,到目前爲止沒有任何工作。該軟件包具有自己的npm依賴關係。我第一次嘗試加載它作爲一個git submodule。我在package.js過這樣的:如何將第三方軟件包導入Meteor?

Npm.depends({ 
    "connect": "2.25.7", 
    "serve-static": "1.5.3", 
    "uglify-js": "2.4.15" 
}); 

Package.onUse(function(api) { 
    api.versionsFrom('1.1.0.2'); 
    api.addFiles('build/gibberish.js', ['client','server']); 
}); 

這抱怨那Gibberish.init()不是一個功能,所以我猜它沒有看到包。然後我意識到gibberish-dsp是它自己的npm包,所以我試圖通過npm包含它。我用這個:

package.js

Npm.depends({ 
    "connect": "2.25.7", 
    "serve-static": "1.5.3", 
    "uglify-js": "2.4.15", 
    "gibberish-dsp": "2.3.2" 
}); 

Package.onUse(function (api) { 

    api.addFiles([ 
    'lib/gibberish.js', 
    ], ['server']); 

    api.export([ 
    'gibberish' 
    ]); 

的lib/gibberish.js:

juice = Npm.require('gibberish-dsp'); 

這給了它一個回調錯誤。我猜流星不能用第三方軟件包做回調?!所以我試着meteorhacks:npm,這顯然修復了回調錯誤。我想這:

if (Meteor.isServer) { 

    console.log('server'); 
     var gibberish = new Gibberish(); 
     var init = Async.wrap(init); 
     gibberish.init(); 

    } 

}); 

和與我/包/文件夾,我的胡言亂語子模塊,我得到一個SyntaxError: Unexpected token Y

更新:SyntaxError指的是亂碼軟件包中的「錯誤的HTML」。顯然它試圖將它作爲Meteor HTML文件讀取(即沒有DOCTYPE等),我不想更改包中的每個文件!

我已經花了大約20個小時了。爲什麼加載外部庫非常困難?!?!我還可以做些什麼?我想喜歡流星,但我準備放棄。

回答

0

您是否已將它添加到Meteor build的活動軟件包列表中?該軟件包將不會被使用,除非它在那裏列出。

$ meteor add user:gibberish 
+0

是的我已經做到了:( –

0

我不想改變每一個文件中的包!

爲什麼不呢?

  1. 分叉現有的節點包。
  2. 使用regexreplaceall its HTML files使他們適合流星。
  3. 只更新兼容的部件以跟上Node包。

更新:看樣子你已經接受this answer

最簡單的(無包裝)的方式來得到這個工作是使用 client/compatibility

  1. 刪除您正在使用,以儘量使這項工作 (或一個新的項目重新開始)任何自制軟件的軟件包。
  2. 構建gibberish.jsthe recommended way.
  3. 複製gibberish.jsclient/compatibility

您現在可以訪問客戶端代碼中的Gibberish對象。