基于NodeJS的Meteor框架,国内使用的还比较少,遇到问题 很麻烦 难以在国内找到答案,本篇文章通过 http://stackoverflow.com/questions/tagged/meteor 找到资料总结而成。
尊重劳动成果 转载请注明。
在Meteor中,创建一个应用后 ,不能直接应用根目录下 写nodeJS应用中那样的模块。如
新建一个文件interface.js
exports.hello = function(){
console.log("Hello");
}
然后运行应用会报错。原因大概是因为Meteor封装了底层nodejs,无法直接使用nodejs的语法如exports,require等。
需要使用nodejs的模块
在Meteor 这样获取require
if (Meteor.isServer) {
Meteor.startup(function () {
// code to run on server at startup
var require = __meteor_bootstrap__.require;
var fs = require('fs');
var url = require('url');
//url.parse(..) do something
.....
});
}
如果是自己的模块,则需要这样做(我不知道其他的方法了,需要更简单的方法 可以上
http://stackoverflow.com 寻找)
建立自己的包
例子:
创建一个文件夹 somepackage
在 somepackage 中创建一个 lib文件夹
在somepackage中创建一个package.json文件
lib文件下创建一个interface.js文件
这里就可以写 普通NodeJS的函数文件了,这里写段简单的代码
exports.hello = function(){
console.log("Hello");
}
{"main":"./lib/interface.js"}
(关于包的创建 具体规范 可以google 'CommonJS',这里的package.json简洁 只为了方便而已)
复制somepackage 文件夹到 /usr/lib/meteor/lib/node_modules文件夹下(这里是Ubuntu的系统为例,Windows请自行砸umeteor安装目录下查找相对应文件夹)
然后在Meteor中这样使用
if (Meteor.isServer) {
Meteor.startup(function () {
// code to run on server at startup
var require = __meteor_bootstrap__.require;
var somepackage = require('somepackage');
somepackage.hello();
});
}
启动Meteor应用,可以在终端看到运行结果。