我正在尝试在meteor中安装Spooky模块(这个模块位于我的公共文件夹中:app / public / node_modules)。
我已阅读答案in this post并在server / 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 :(得分:1)
您需要创建一个智能包才能在您的应用中使用Npm模块。或者你可以使用meteor-npm。
您不能将Npm.require
用于非标准的npm模块,例如幽灵般的。
如果你使用meteor-npm,可以用陨石安装它:mrt add npm
然后在将模块添加到packages.json之后使用Meteor.require("spooky")
。您可以在此处查看详细信息:http://meteorhacks.com/complete-npm-integration-for-meteor.html。
这样做的官方方法是制作自己的智能包来包装npm模块。有一个这样的包的例子:https://github.com/avital/meteor-xml2js-npm-demo
该示例使用xml2js作为npm模块,但您可以交换名称,因此它的怪异而不是。
然后,您可以将此包添加到/packages
文件夹中(例如名称为spooky
),并使用meteor add spooky
将其添加到您的流星项目中。
在atmosphere.meteor.com上的软件包有更多的例子,他们几乎做同样的事情(例如stripe(https://atmosphere.meteor.com/package/stripe))。
答案 1 :(得分:0)
The article Akshat linked to已更新:
cd project
meteor add meteorhacks:npm
修改project/packages.json
:
{
"redis": "0.8.2",
"github": "0.1.8"
}
使用那些npm模块:
var Github = Meteor.npmRequire('github');
var github = new Github();
github.gists.getFromUser({user: 'arunoda'}, function(err, gists) {
console.log(gists);
});