node.js - 解析服务器迁移到 IBM bluemix

标签 node.js parse-platform ibm-cloud parse-server

我尝试在 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/

相关文章:

dart - 可观察到的列表未从js回调更新

Node.js 每三次刷新就无法获取静态文件

node.js - Sequelize - 无法读取未定义的属性 'list'

html - 验证静态路径,nodejs Express Passport html

ios - 有没有办法让 parse 允许 Facebook 登录?

javascript - 无法从 Heroku 服务器获取数据到 ios

javascript - 如何将 .wav 数据转换为 .mp3 并在 Meteor 应用程序中播放音频

ibm-cloud - Bluemix Conversation,推进对话

node.js - App 和 Web 中的 VoIP 集成

javascript - 发送 json 对象或使用快速路由渲染 View