如何在启动node-webkit之前启动Meteor实例?

我开发了一个Meteor应用程序。 我想将这个应用程序打包到Chromium的node-webkit应用程序运行时。 我需要Meteor服务器进程在本地运行。 当用户启动node-webkit应用程序时,如何启动Meteor服务器进程?

我知道我可以像这样使用node-webkit启动一个NodeJS服务器实例:

server.js

#!/usr/bin/env node require('http').createServer(function(req, res) { res.writeHead(200, {'content-type': 'text/html'}); res.end('<h1>sup</h1>'); }).listen(9000, '127.0.0.1'); 

那么如果我运行:

 $ nw ./ 

node-webkit将启动NodeJS服务器并启动node-webkit实例。 我没有在这里包括package.json文件,但它只是说在http://127.0.0.1:9000

那么,如何在node-wekkit应用程序运行的同时编写server.js文件来启动Meteor实例呢?

感谢您的任何想法。

首先打包你的meteor应用程序meteor build --directory /your/node-webkit/project/并使用这段代码启动你的应用程序。 但是,使用node-webkit打包Meteor可能会更复杂一点。 首先,您需要在客户端计算机上运行mongodb服务器,或者在任何时候客户端可以连接一个mongodb服务器。

 var path = require('path'); var child_process = require('child_process'); // change these var PORT = 9000; var ROOT_URL = 'http://localhost:'+PORT; var MONGO_URL = 'mongodb://localhost:27017/my_app_db'; var NODE_BIN = '/usr/local/bin/node'; // install npm dependencies var options = {cwd: path.resolve(__dirname, 'bundle/programs/server/')}; var installNpm = child_process.exec('npm install', options, onNpmInstall); function onNpmInstall (err, stderr, stdout) { if(err) throw new Error('could not install npm dependencies'); // start Meteor var options = { env: {PORT: PORT, MONGO_URL: MONGO_URL, ROOT_URL: ROOT_URL}, cwd: __dirname }; var proc = child_process.spawn(NODE_BIN, ['bundle/main.js'], options); proc.on('close', function (code) { console.log('Meteor exited with code ' + code); }); } 

如果需要100%的客户端应用程序,则必须删除与mongo相关的智能软件包。