在Meteor中使用具有依赖关系的NPM包

时间:2015-04-01 18:16:56

标签: javascript meteor npm

我正在尝试在我的流星项目中使用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世界也很陌生,这种工作流程是我应该采用的方式和/或是否有任何我可以做出或改进的改进?

1 个答案:

答案 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。