2014-02-04 3 views
3

Я пытаюсь установить модуль Spooky в метеор (этот находится в моей общей папке: app/public/node_modules).Метеор не может найти модуль «модуль»

Я прочитал ответы in this post и добавил следующий код сервера/server.js

Meteor.startup -> 
    path = Npm.require 'path' 
    fs = Npm.require 'fs' 
    base = path.resolve '.' 
    isBundle = fs.existsSync base + '/bundle' 
    modulePath = base + (if isBundle then '/bundle/static' else '/public') + '/node_modules' 
    spooky = Npm.require modulePath + '/spooky' 

Но когда я бегу метеора я получаю:

Error: Cannot find module '/Users/mac/Documents/websites/app/.meteor/local/build/programs/server/public/node_modules/spooky' 
+0

просто установите пакет с -g ('НПМ установки -g packagename'). Папка 'public' обращена наружу и видна всем. Вы этого не хотите. Плюс метеор/узел не находит его там. –

ответ

1

Вам нужно создать смарт-пакет для использования модулей Npm в вашем приложении. В качестве альтернативы вы можете использовать meteor-npm.

Вы не можете использовать Npm.require самостоятельно для нестандартных модулей npm, таких как жуткий.

Если вы используете метеор-NPM вы можете установить его с метеоритом: mrt add npm

Затем используйте Meteor.require("spooky") вместо этого, после того, как вы добавили модуль к вашему packages.json. Вы можете посмотреть здесь для получения более подробной информации: http://meteorhacks.com/complete-npm-integration-for-meteor.html.

Официальный способ сделать это, чтобы сделать свой собственный смарт-пакет, чтобы обернуть модуль НПМ Существует пример такого пакета:. https://github.com/avital/meteor-xml2js-npm-demo

В данном примере используется xml2js как модуль НПМ, но вы могли бы замените имена вокруг так, чтобы их жуткий.

Тогда вы можете добавить этот пакет в свою папку /packages (скажем, с именем spooky) и добавить его в свой проект метеор с помощью meteor add spooky.

Пакеты на сайте weather.meteor.com имеют больше примеров, они в значительной степени делают то же самое (например, полоса (https://atmosphere.meteor.com/package/stripe)).

+0

Спасибо, Акшат! :) Кстати, вы написали «модуль вашему пакету.json». Это должно быть package.json. –

0

The article Akshat linked to обновлено:

cd project 
meteor add meteorhacks:npm 

Редактировать project/packages.json:

{ 
    "redis": "0.8.2", 
    "github": "0.1.8" 
} 

Используйте эти НПМ модули:

var Github = Meteor.npmRequire('github'); 
var github = new Github(); 

github.gists.getFromUser({user: 'arunoda'}, function(err, gists) { 
    console.log(gists); 
}); 
Смежные вопросы