node.js - node - La migración del servidor Parse a IBM BlueMix
watson assistant node js (1)
Estoy tratando de ejecutar el servidor de parse con nodejs en ibm bluemix pero está arrojando un error en el archivo de análisis PromiseRouter.
PromiseRouter.js:48
throw _iteratorError;
^
ReferenceError: Symbol is not defined
¿Cómo puedo resolver esto?
Mi aplicación .js
var express = require(''express'');
var ParseServer = require(''parse-server'').ParseServer;
var app = express();
var port = process.env.PORT || 1337;
// Specify the connection string for your mongodb database
// and the location to your Parse cloud code
var api = new ParseServer({
databaseURI: ''mongodb://IBM_MONGO_DB'',
cloud: ''./cloud/main.js'', // Provide an absolute path
appId: ''MYAPPID'',
masterKey: ''MYMASTER_KEY'', //Add your master key here. Keep it secret!
serverURL: ''http://localhost:'' + port + ''/parse'' // Don''t forget to change to https if needed
});
app.use(''/parse'', api);
app.get(''/'', function(req, res) {
res.status(200).send(''Express is running here.'');
});
app.listen(port, function() {
console.log(''parse-server-example running on port '' + port + ''.'');
});
Respuesta:
/Applications/MAMP/htdocs/IBM_bluemix/Development/my_node_app/node_modules/parse-server/lib/PromiseRouter.js:48
throw _iteratorError;
^
ReferenceError: Symbol is not defined
at PromiseRouter.merge (/Applications/MAMP/htdocs/IBM_bluemix/Development/my_node_app/node_modules/parse-server/lib/PromiseRouter.js:33:40)
at new ParseServer (/Applications/MAMP/htdocs/IBM_bluemix/Development/my_node_app/node_modules/parse-server/lib/index.js:137:10)
at Object.<anonymous> (/Applications/MAMP/htdocs/IBM_bluemix/Development/my_node_app/app.js:10:11)
at Module._compile (module.js:456:26)
at Object.Module._extensions..js (module.js:474:10)
at Module.load (module.js:356:32)
at Function.Module._load (module.js:312:12)
at Function.Module.runMain (module.js:497:10)
at startup (node.js:119:16)
at node.js:906:3
Esta es la función en PromiseRouter.js que está arrojando un error
PromiseRouter.prototype.merge = function (router) {
var _iteratorNormalCompletion = true;
var _didIteratorError = false;
var _iteratorError = undefined;
try {
for (var _iterator = router.routes[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
var route = _step.value;
this.routes.push(route);
}
} catch (err) {
_didIteratorError = true;
_iteratorError = err;
} finally {
try {
if (!_iteratorNormalCompletion && _iterator.return) {
_iterator.return();
}
} finally {
if (_didIteratorError) {
throw _iteratorError;
}
}
}
};
Esto es todo lo que tengo
La razón por la cual Symbol
no se encuentra es porque es una característica de ES6 que no es compatible con su compilación actual de Node.js. Compruebe para asegurarse de que su tiempo de ejecución de Node.js sea al menos v4 ( consulte la compatibilidad aquí ).
La manera fácil de garantizar que su compilación de Node.js en Bluemix se ejecute al menos v4.0 es definir su variable de engine
en el archivo package.json
su aplicación como tal:
{ "engines" : { "node" : ">=4.0" } }
Después de actualizar su archivo package.json
, vuelva a enviar su aplicación a Bluemix y la compilará con su versión definida de Node.js