我正在尝试在我的流星项目中使用NPM包,但是我在使用它时遇到了一些问题。
我正在尝试使用的模块是 steam 包。 我为meteor添加了 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"
}
(为了澄清上面的内容,它是具有所有依赖关系和依赖关系依赖关系的steam包)
现在我已尝试在我的meteor应用程序中使用此代码,该代码位于 - / server / 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#没有方法'publicEncrypt'
我发现它是steam和dependencie包的require()
函数,它给了我这些错误。如果我将require()
替换为Meteor.npmRequire()
,我只需转到其中一个NPM包中的next require()
函数。
有没有办法解决此问题而不将每个require()函数更改为Meteor.npmRequire()
?
即使我应该采用什么是最好的方法呢?
我对NPM和Meteor世界也很陌生,这种工作流程是我应该采用的方式和/或是否有任何我可以做出或改进的改进?
答案 0 :(得分:1)
更新:截至2016年7月,Meteor 1.4使用Node 4.4.7,它支持流npm包(需要4.1.1 +)
Steam NPM插件不适用于Meteor。
NPM包页面(https://www.npmjs.com/package/steam)声明:
注意:仅支持Node.js v0.12 和io.js v1.4。
Meteor正在使用旧版本的NodeJS。例如。 Meteor v1.0.4(2015年3月17日)使用 v0.10.36
Meteor的发布周期非常短,但我怀疑,鉴于Meteor v0.8.1.1(2014年5月1日)使用的是Node v0.10.26,很快就会支持Node v0.12。