在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)
答案 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;
}
});
}