meteor cloud9-ide

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.

  1. seleccione el taller como nodejs.

  2. en la terminal escribe el comando "curl https://install.meteor.com/ | sh"

  3. en terminal escriba $ meteor crear newapp (el nombre de su carpeta principal de la aplicación)

  4. en terminal escribir cd newapp

  5. 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)

  6. después de unos segundos, obtiene una aplicación de enlace que se ejecuta en: localhost: 8080

  7. 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