我尝试在 ibm bluemix 中使用 nodejs 运行解析服务器,但它在解析服务器 PromiseRouter 文件中抛出错误。
PromiseRouter.js:48
throw _iteratorError;
^
ReferenceError: Symbol is not defined
如何解决这个问题
我的应用程序.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 + '.');
});
回应:
/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
这是 PromiseRouter.js 中抛出错误的函数
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;
}
}
}
};
这就是我的全部
最佳答案
找不到Symbol
的原因是它是ES6 feature当前的 Node.js 版本不支持这一点。检查并确保您的 Node.js 运行时至少为 v4 ( see compatibility here )。
确保 Bluemix 上的 Node.js 构建至少运行 v4.0 的简单方法是在应用程序的 package.json
文件中将 engine
变量定义为例如:
{ "engines" : { "node" : ">=4.0" } }
更新您的 package.json
文件后,将您的应用程序重新推送到 Bluemix,它将使用您定义的 Node.js 版本来构建它
关于node.js - 解析服务器迁移到 IBM bluemix,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35466853/