1

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

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

错误是:

应用程序/index.js:1
要求();
^
ReferenceError:未定义要求
    在 app/index.js:1:1
    在/home/huyinghuan/workspace/NodeJs/myMeteorJS/testrequire/.meteor/local/build/server/server.js:113:21
    在 Array.forEach (本机)
    在 Function._.each._.forEach (/usr/lib/meteor/lib/node_modules/underscore/underscore.js:79:11)
    运行时(/home/huyinghuan/workspace/NodeJs/myMeteorJS/testrequire/.meteor/local/build/server/server.js:99:7)
4

4 回答 4

2

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

于 2013-02-23T12:56:35.187 回答
2

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

于 2013-09-12T14:45:01.240 回答
0

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

于 2013-12-02T00:13:10.283 回答
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;
    }
  });
}
于 2014-10-23T03:14:27.957 回答