如何在Meteor中使用NodeJS模块?

时间:2013-02-23 10:12:56

标签: meteor

在NodeJS应用程序中,我已经完成了一些模块,现在我想在Meteor中使用它们,我该怎么办? 例如,有一个文件'hello.js',content:

require('url');// In here,require other modules
function sayHi(name){
       console.log("Hi "+ name);
}
exports.sayHi = sayHi;

如何在流星中使用'say Hi'?

当我这样做时:

if (Meteor.isServer) {
       Meteor.startup(function () {
       var require = __meteor_bootstrap__.require;
       var index = require('./hello');
       hello.syaHi('Ec');})}

错误是:


app/index.js:1
require();
^
ReferenceError: require is not defined
    at app/index.js:1:1
    at /home/huyinghuan/workspace/NodeJs/myMeteorJS/testrequire/.meteor/local/build/server/server.js:113:21
    at Array.forEach (native)
    at Function._.each._.forEach (/usr/lib/meteor/lib/node_modules/underscore/underscore.js:79:11)
    at run (/home/huyinghuan/workspace/NodeJs/myMeteorJS/testrequire/.meteor/local/build/server/server.js:99:7)

4 个答案:

答案 0 :(得分:2)

我认为,您必须将模块安装/复制到projectdir/.meteor/local/build/server/node_modules,这是指向/usr/local/meteor/lib/node_modules的链接。我尝试使用node.js模块tracer并且它有效。每次更新流星安装时,都必须将文件复制到此目录中。

答案 1 :(得分:2)

此外,Npm.require()似乎是现在需要节点模块的正确方法。

答案 2 :(得分:0)

更新,我必须将我的模块安装到.meteor / local / build / programs / server / node_modules以及使用Npm.require。

答案 3 :(得分:0)

这是一个在Meteor中使用NPM包更容易的软件包:

https://github.com/meteorhacks/npm

示例用法:

if (Meteor.isClient) {
  getGists = function getGists(user, callback) {
    Meteor.call('getGists', user, callback);
  }
}

if (Meteor.isServer) {
  Meteor.methods({
    'getGists': function getGists(user) {
      var GithubApi = Meteor.npmRequire('github');
      var github = new GithubApi({
          version: "3.0.0"
      });

      var gists = Async.runSync(function(done) {
        github.gists.getFromUser({user: 'arunoda'}, function(err, data) {
          done(null, data);
        });
      });

      return gists.result;
    }
  });
}