2015-04-01 171 views
3

我正在嘗試在我的流星項目中使用NPM包,但是在啓動它時遇到了一些問題。在流星中使用依賴項的NPM包

我試圖使用的模塊是steam包。 我已經添加了meteorhacks:npm包流星,並改變了packages.json文件:

{ 
    "steam": "0.6.8", 
    "adm-zip": "0.4.7", 
    "buffer-crc32": "0.2.5", 
    "bytebuffer": "3.5.4", 
     "bufferview": "1.0.1", 
     "long": "2.2.3", 
    "protobufjs": "4.0.0-b2", 
     "ascli": "1.0.0", 
     "optjs": "3.2.1-boom", 
     "colour": "0.7.1" 
} 

(澄清以上,它的蒸汽包所有的依賴和的依賴依賴)

現在我試着在我的流星應用程序使用此代碼位於使用包 - /服務器/ steambot/steambot.js

var Steam = Meteor.npmRequire('steam'); 
var bot = new Steam.SteamClient(); 
bot.logOn({ // (fake credentials) 
    accountName: 'a', 
    password: '123456789', 
    authCode: 'aaa55', 
    shaSentryfile: 'aaa' 
}); 

我希望這會很容易,但錯誤就此開始。

var cryptedSessKey = require('crypto').publicEncrypt(fs.readFileSync(__dirna TypeError: Object # has no method 'publicEncrypt'

我想通了,這是一個的給我的這些錯誤的蒸汽和dependencie包的require()功能。如果我將require()替換爲Meteor.npmRequire(),我只需使用其中一個NPM軟件包中的next require()函數。

有沒有辦法解決這個問題,而不改變每個要求()功能Meteor.npmRequire()

即使我應該什麼是最好的方法?

我對NPM和流星世界也很陌生,這種工作流程是我應該做的和/或是否有任何改進,我可以提出或記住?

+0

你有沒有嘗試在'packages.json'中添加*只有*'steam'? - NPM應該自行解決依賴關係。 – 2015-04-01 18:21:49

+0

是的,我有。錯誤保持不變。 – Thark 2015-04-01 18:26:51

+0

我正在運行一個具有相同'package.json'和2行代碼片段的示例,並且我沒有收到任何錯誤,您使用的流星版本是什麼? 'meteor --version',還是你有更多的代碼除了這兩行?把這個conde放在'Meteor.startup(function(){})'裏面,檢查是否仍然發生了這個require – Ethaan 2015-04-01 18:34:25

回答

1

更新:截至7月2016流星1.4使用節點4.4.7,它不支持流NPM包(需要4.1.1+)

的蒸汽NPM插件不會與流星工作。

故宮包頁面(https://www.npmjs.com/package/steam)規定:

Note: only Node.js v0.12 and io.js v1.4 are supported.

流星使用的的NodeJS舊版本。例如。流星v1.0.4(2015年3月17日)使用v0.10.36

流星有很短的發佈週期,但我懷疑節點v0.12將支持短期內考慮到流星v0.8.1.1(五月1,2014)使用Node v0.10.26。