随着0.6.5的发布,可以用流星开发非网络应用程序。 我从头开始为ARM处理器重建它,但我根本不需要DB支持。 (Mongo是一个处理器杀手,占用空间很大而我根本不需要它)
ARM应该仅作为DDP客户端工作,考虑到这一点,我手动构建它而不使用mongo。
并尝试构建最简单的应用程序 开始时只有一个包(所有标准包已删除)
meteor
和服务器文件夹中的一个文件
main = function(argv){
return "DAEMON"
}
Meteor.setInterval(function(){
console.log("HellOnWorld");
},1000);
在具有完整流星安装的计算机上,它按预期工作 但没有安装mongo我有错误
Unexpected mongo exit code 127. Restarting.
Unexpected mongo exit code 127. Restarting.
Initializing mongo database... this may take a moment.
Unexpected mongo exit code 127. Restarting.
Can't start mongod
显然我没有并且想要mongo。
有没有办法在不等mongo db的情况下启动流星?
Meteor团队计划支持其他数据库,因此必须迟早实施。
答案 0 :(得分:19)
<强>更新强>
对于较新版本的Meteor,您需要删除mongo
包。 mongo包嵌入在meteor-platform
包中。因此,您需要将其删除并添加所有其余内容(来自https://github.com/meteor/meteor/tree/devel/packages/meteor-platform):
meteor remove meteor-platform
meteor add meteor webapp logging tracker session ddp blaze spacebars templating check underscore jquery random ejson templating check underscore jquery random ejson
然后你的应用程序将不再使用Mongo:)。
在开发模式下,你可以通过将MONGO_URL
环境变量设置为其他东西并启动流星来消除mongo。例如:MONGO_URL=mongodb://nowhere meteor
答案 1 :(得分:9)
事实证明,如果您在运行meteor之前只设置任何MONGO_URL环境变量,它将无法启动其本地MongoDB!非常适合测试不依赖Mongo的软件包。
$ meteor test-packages ./
Testing fortawesome:fontawesome-compat...
[[[[[ Tests ]]]]]
=> Started proxy.
=> Started MongoDB.
=> Started your app.
=> App running at: http://localhost:3000/
$ MONGO_URL=mongodb://mysql.com meteor test-packages ./ # haha
Testing fortawesome:fontawesome-compat...
[[[[[ Tests ]]]]]
=> Started proxy.
=> Started your app.
=> App running at: http://localhost:3000/
看看马,没有蒙古!
我已确认没有启动mongo进程,也没有创建.meteor/local/db
文件夹。
答案 2 :(得分:7)
1)转到捆绑包中的programs/server
目录,然后npm install tingodb
将TingoDb添加到捆绑包中。
2)在programs/server/packages/mongo-livedata.js
的顶部附近,使用所有其他Npm.require
语句,添加以下行
var Db = Npm.require('tingodb')().Db;
3)在同一个文件(programs/server/packages/mongo-livedata.js
)中替换以下代码块
MongoDB.connect(url, options, function(err, db) {
if (err)
throw err;
self.db = db;
Fiber(function () {
// drain queue of pending callbacks
_.each(self._connectCallbacks, function (c) {
c(db);
});
}).run();
});
使用此代码:
var db = new Db('path/to/your/db/directory', {});
self.db = db;
Fiber(function () {
_.each(self._connectCallbacks, function (c) {
c(db);
});
}).run();
path/to/your/db/directory
可以是任意位置,但默认情况下相对于捆绑包中的programs/server
目录。
4)要运行Meteor捆绑包,它希望您导出名为MONGO_URL
的环境变量。您可以深入查看代码并删除对此的检查,但由于它从未使用过,您可以轻松导出假的MONGO_URL
,就像您的包README
文件中的那个一样:
export MONGO_URL='mongodb://user:password@host:port/databasename'
5)从你的bundle的基目录运行node main.js
。
警告经纪人:显然你在这里乱搞Meteor内部,这几乎肯定会打破未来的版本。
答案 3 :(得分:5)
流星1.2.1 - 只需设置
MONGO_URL=none
表示环境变量。 (none不是关键字,任何无效似乎都会阻止mongo启动)
答案 4 :(得分:2)
作为一种奇怪的可能性,在正确的端口上创建一个模拟mongo服务器,并设置您的环境变量来访问它。我敢打赌,你只需要实施一些握手程序,然后就不再需要流量了。超出我的能力,但它确实具有不需要采用代码更改的优势,因为事情发生了变化。
答案 5 :(得分:0)
列出的答案不适用于Meteor 1.x. 以下是我在没有mongodb的情况下运行meteor的方法,并且不需要在流星中修改任何东西(源代码和包配置)。
cd mongodb-fs&amp;&amp; npm install&amp;&amp; node samples / test-server.js
如果一切顺利,您将看到以下控制台日志
meteor create --example leaderboard&amp;&amp; cd排行榜
MONGO_URL = mongodb:// localhost:27027 / fakedb meteor
向玩家添加点,并使用mongo命令行进行检查: mongo localhost:27027 / fakedb