解析服务器迁移到 IBM bluemix
Posted
技术标签:
【中文标题】解析服务器迁移到 IBM bluemix【英文标题】:Parse server migration to IBM bluemix 【发布时间】:2016-02-17 20:15:55 【问题描述】:我正在尝试在 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;
;
这就是我的全部
【问题讨论】:
这是唯一的输出吗?很难说这两条线发生了什么。谢谢 你好@BenRondeau 我已经添加了我拥有的所有内容和整个回复。 已答复。我相信应该可以解决它 【参考方案1】:找不到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 版本构建它
【讨论】:
你是对的。我使用的是 bluemix 默认节点,即 0.2.x以上是关于解析服务器迁移到 IBM bluemix的主要内容,如果未能解决你的问题,请参考以下文章
在 Bluemix 迁移到 cflinuxfs2 堆栈后,Android 移动首个应用程序停止工作
从 IBM MQ 迁移到 ActiveMQ 的过程 [关闭]
从 IBM MQ 迁移到 javax.jms.* (Weblogic)