2015-04-01 157 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。