Meteoro con nube9
cloud9-ide (4)
Ok, entonces en realidad la primera parte de la pregunta es la respuesta correcta, si no lo hubiera hecho al revés:
BIND_IP
se usa dentro de meteor / packages / webapp / webapp_server.js , pero no en meteor / tools / run-proxy.js . Sin embargo, ambos necesitan vincularse a la variable ''IP'' de cloud9.
Para resolver este problema, simplemente actualice el proxy, de forma similar a como lo hice, para usar la dirección IP correcta: self.server.listen(self.listenPort, process.env.IP, function () {
y solo escriba en su export BIND_IP=$IP
.bashrc export BIND_IP=$IP
ahora todo funciona sin problemas (siempre que uses un mongodb fuera de la nube9)
He resumido los pasos necesarios en mi blog: http://peter.grman.at/how-to-run-meteor-in-cloud9/
Cuando trato de ejecutar meteoro en la nube9 me encuentro con uno de los siguientes errores:
Al ejecutar la versión modificada anterior de cloud9 , aparece el error:
No dependency info in bundle. Filesystem monitoring disabled.
=> Errors prevented startup:
Exception while bundling application:
Error: Package not found: standard-app-packages
at self.api.use (/var/lib/stickshift/532a1c97500446885f0002a8/app-root/data/meteor/tools/bundler.js:113:17)
at Array.forEach (native)
at Function._.each._.forEach (/var/lib/stickshift/532a1c97500446885f0002a8/app-root/data/meteor/dev_bundle/lib/node_modules/underscore/underscore.js:79:11)
at Object.self.api.use (/var/lib/stickshift/532a1c97500446885f0002a8/app-root/data/meteor/tools/bundler.js:110:9)
Cuando intento ejecutar la última versión , obtengo un error de cloud9:
Cloud9 Error: you may be using the wrong PORT & HOST for your server app
Node: use ''process.env.PORT'' as the port and ''process.env.IP'' as the host in your scripts. See also https://c9.io/site/blog/2013/05/can-i-use-cloud9-to-do-x/
En ambos casos, clono el repositorio GitHub correspondiente y ejecuto export BIND_IP=$IP
y export PORT=20000
(como se describe en varias publicaciones). También abandoné la esperanza con el servidor MongoDB predeterminado y, en cambio, estoy exportando MONGO_URL
a una base de datos gratuita alojada en https://www.mongohq.com/ .
También intenté combinar la solicitud de extracción de la versión de meteorito de cloud9 con el maestro, pero esos archivos ya no existen. Todo lo demás que pude encontrar fue sobre Meteor versión 0.6.5 y 0.5
Intentando modificar la última versión de Meteor, busqué la llamada httpServer.listen
, pero encontré solo una en meteor/packages/webapp/webapp_server.js
, y parece que el error cloud9 se produce antes de que se llegue a esa parte del código ( si alguna vez se alcanza). De modo que debe haber otra pieza de código que está vinculada a la dirección o puerto incorrectos.
Los complementos que uso son:
standard-app-packages
insecure
preserve-inputs
underscore
backbone
jquery
accounts-ui
accounts-base
accounts-password
accounts-facebook
accounts-google
coffeescript
Actualizar:
Después de algunas horas más buscando una solución, llegué mucho más lejos. El problema estaba en meteor / tools / run-proxy.js :
En la línea 94, puede ver: self.server.listen(self.listenPort, function () {
aquí falta la dirección IP correspondiente a la que el servidor debería vincularse. Ahora meteor se usaba para usar una variable ambiental BIND_IP
que podíamos introducir aquí de nuevo, pero esto tendría cambios adicionales innecesarios en cloud9, ya que exportan la dirección IP actual a la que un servicio debería vincularse en la variable IP
. Así que cambié la línea en cuestión a: self.server.listen(self.listenPort, process.env.IP, function () {
También he modificado adicionalmente meteor / tools / run-all.js , ya que no estaba seguro de si se usa el parámetro de puerto correcto. En la línea 24 intercambié var listenPort = options.port;
con var listenPort = process.env.PORT;
Si bien ahora finalmente puedo iniciar la aplicación, todavía no se está ejecutando y obtengo el siguiente resultado:
=> Running Meteor from a checkout -- overrides project version (0.7.2)
[[[[[ ~/<PROJECT_ID>/<PROJECT_NAME> ]]]]]
=> Started proxy.
W20140321-22:31:42.591(-4)? (STDERR)
W20140321-22:31:43.036(-4)? (STDERR) events.js:72
W20140321-22:31:43.037(-4)? (STDERR) throw er; // Unhandled ''error'' event
W20140321-22:31:43.037(-4)? (STDERR) ^
Cloud9 Error: you may be using the wrong PORT & HOST for your server app
Node: use ''process.env.PORT'' as the port and ''process.env.IP'' as the host in your scripts. See also https://c9.io/site/blog/2013/05/can-i-use-cloud9-to-do-x/
W20140321-22:31:43.108(-4)? (STDERR) Error: listen EACCES
W20140321-22:31:43.109(-4)? (STDERR) at errnoException (net.js:901:11)
W20140321-22:31:43.109(-4)? (STDERR) at Server._listen2 (net.js:1020:19)
W20140321-22:31:43.111(-4)? (STDERR) at listen (net.js:1061:10)
W20140321-22:31:43.111(-4)? (STDERR) at net.js:1143:9
W20140321-22:31:43.112(-4)? (STDERR) at dns.js:72:18
W20140321-22:31:43.112(-4)? (STDERR) at process._tickCallback (node.js:415:13)
=> Exited with code: 8
Sin embargo, el meteorito no se cuelga y las excepciones siguen apareciendo una tras otra. Es por eso que primero pensé, la excepción se debe a un error de autenticación en MongoDB, ya que también Error-Code 8 para MongoDB es un error de autenticación, pero esto es lo que obtengo cuando utilizo un nombre de usuario inválido + contraseña en mi base de datos alojada en MongoHQ:
[...]
=> Started proxy.
W20140321-22:54:17.282(-4)? (STDERR)
W20140321-22:54:18.700(-4)? (STDERR) /var/lib/stickshift/532a1c97500446885f0002a8/app-root/data/meteor/packages/mongo-livedata/.build/npm/node_modules/mongodb/lib/mongodb/mongo_client.js:400
W20140321-22:54:18.777(-4)? (STDERR) throw err
W20140321-22:54:18.778(-4)? (STDERR) ^
W20140321-22:54:18.778(-4)? (STDERR) MongoError: auth fails
W20140321-22:54:18.778(-4)? (STDERR) at Object.toError (/var/lib/stickshift/532a1c97500446885f0002a8/app-root/data/meteor/packages/mongo-livedata/.build/npm/node_modules/mongodb/lib/mongodb/utils.js:110:11)
W20140321-22:54:18.779(-4)? (STDERR) at /var/lib/stickshift/532a1c97500446885f0002a8/app-root/data/meteor/packages/mongo-livedata/.build/npm/node_modules/mongodb/lib/mongodb/auth/mongodb_cr.js:34:33
W20140321-22:54:18.779(-4)? (STDERR) at /var/lib/stickshift/532a1c97500446885f0002a8/app-root/data/meteor/packages/mongo-livedata/.build/npm/node_modules/mongodb/lib/mongodb/db.js:1670:9
W20140321-22:54:18.779(-4)? (STDERR) at Server.Base._callHandler (/var/lib/stickshift/532a1c97500446885f0002a8/app-root/data/meteor/packages/mongo-livedata/.build/npm/node_modules/mongodb/lib/mongodb/connection/base.js:382:41)
W20140321-22:54:18.780(-4)? (STDERR) at /var/lib/stickshift/532a1c97500446885f0002a8/app-root/data/meteor/packages/mongo-livedata/.build/npm/node_modules/mongodb/lib/mongodb/connection/server.js:472:18
W20140321-22:54:18.780(-4)? (STDERR) at MongoReply.parseBody (/var/lib/stickshift/532a1c97500446885f0002a8/app-root/data/meteor/packages/mongo-livedata/.build/npm/node_modules/mongodb/lib/mongodb/responses/mongo_reply.js:68:5)
W20140321-22:54:18.780(-4)? (STDERR) at null.<anonymous> (/var/lib/stickshift/532a1c97500446885f0002a8/app-root/data/meteor/packages/mongo-livedata/.build/npm/node_modules/mongodb/lib/mongodb/connection/server.js:430:20)
W20140321-22:54:18.781(-4)? (STDERR) at EventEmitter.emit (events.js:95:17)
W20140321-22:54:18.781(-4)? (STDERR) at null.<anonymous> (/var/lib/stickshift/532a1c97500446885f0002a8/app-root/data/meteor/packages/mongo-livedata/.build/npm/node_modules/mongodb/lib/mongodb/connection/connection_pool.js:191:13)
W20140321-22:54:18.782(-4)? (STDERR) at EventEmitter.emit (events.js:98:17)
=> Exited with code: 8
Este error se genera en meteor / packages / mongo-livedata / mongo_driver.js en la línea 149:
147: MongoDB.connect(url, mongoOptions, function(err, db) {
148: if (err)
149: throw err;
150: self.db = db;
Esto también está bien, sin embargo, no pude encontrar el origen del otro error, que ocurre cuando mis credenciales son correctas.
Me encontré con problemas similares inicialmente, pero la última versión de Meteor (0.9.0) hace que esto sea fácil al menos.
meteor run --port=$IP:$PORT
Parece hacer el truco (al menos hasta ahora)
Esto está documentado en
meteor help run
hth
Andy
el meteorito funciona muy bien en c9.io, estoy trabajando en c9.io con metor. solo siguiendo los pasos.
seleccione el taller como nodejs.
en la terminal escribe el comando "curl https://install.meteor.com/ | sh"
en terminal escriba $ meteor crear newapp (el nombre de su carpeta principal de la aplicación)
en terminal escribir cd newapp
en la terminal escriba $ meteor -p 8080 (note -p o --port, si usa el puerto como 300 que no funciona correctamente en c9.io, entonces debe usar el puerto como 8080 o 8081 o 8082)
después de unos segundos, obtiene una aplicación de enlace que se ejecuta en: localhost: 8080
haga clic en el enlace y ábralo.
Meteor 1.4:
Al principio, probé muchas variaciones diferentes, con y sin la bandera de --port
mencionada en la respuesta de Andrew.
Si solo ejecutara el comando
meteor
sin ninguna bandera, la aplicación se iniciaría correctamente en el puerto 3000, pero aparentemente ese puerto no se puede usar en Cloud9 ( https://docs.c9.io/docs/multiple-ports )Si utilicé el indicador de
--port
, el meteoro simplemente esperaría "Iniciar su aplicación"
Lo más probable es que algo se haya quedado atascado en el camino (con todos los reintentos), porque lo que probablemente lo solucionó finalmente fue meteor reset
un meteor reset
antes de iniciar la aplicación ( aplicación Meteor: atascada en "Iniciar la aplicación" cuando intentas ejecutarla ):
...$ sudo meteor reset
...$ sudo meteor --port=$IP:$PORT
Si eso no ayuda, también he agregado un registro detallado del intento que finalmente funcionó (ver esta publicación en el foro de meteoritos: Meteor se ha trabado al iniciar su aplicación ). Pruebe esto si todavía está atascado:
...$ sudo meteor reset
...$ METEOR_PROFILE=1
...$ METEOR_LOG=debug
...$ sudo meteor --port=$IP:$PORT --verbose
Después de que funcionó la primera vez, ahora puedo iniciar la aplicación con un solo comando:
...$ sudo meteor --port=$IP:$PORT