如何将第三方软件包导入Meteor?

时间:2015-07-12 18:08:46

标签: javascript node.js meteor

我试图为Meteor重新包装Gibberish.js,到目前为止还没有任何工作。该包具有自己的npm依赖项。我首先尝试将其加载为git子模块。我在package.js中有这个:

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');

这给了它一个回调错误。我猜Meteor不能用第三方软件包进行回调?!所以我尝试了meteorhacks:npm,这显然修复了回调错误。我试过这个:

  if (Meteor.isServer) {

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

     }

});

我的/ packages /文件夹中有我的乱码子模块,我得到SyntaxError: Unexpected token Y

更新:SyntaxError指的是"错误的HTML"在乱码包中。显然它试图将其作为Meteor HTML文件(即没有DOCTYPE等)阅读。我不想改变包中的每个文件!

我可能已经花了大约20个小时。为什么加载外部库这么难?!?!我还可以做些什么?我想要像流星一样,但我已经准备放弃了。

2 个答案:

答案 0 :(得分:0)

您是否已将其添加到Meteor版本的活动包列表中?除非在那里列出,否则不会使用该包。

$ meteor add user:gibberish

答案 1 :(得分:0)

  

我不想更改套餐中的每个文件!

为什么不呢?

  1. 分叉现有的Node包。
  2. regex中使用replace all its HTML files使其适合Meteor。
  3. 仅更新兼容部件以跟上Node包。
  4. 更新:您似乎已接受this answer

      

    最简单(非打包)的方法是使用它   client/compatibility

         
        
    1. 删除您正在使用的所有自制软件包以尝试使其工作   (或重新开始一个新项目)。
    2.   
    3. the recommended way.
    4. 中构建gibberish.js   
    5. gibberish.js复制到client/compatibility
    6.         

      您现在可以访问客户端代码中的Gibberish对象。