如何使用 express 启动 Parse Server 6?

How to start Parse Server 6 with express?

提问人:coolman 提问时间:10/10/2023 最后编辑:coolman 更新时间:10/31/2023 访问量:32

问:

我正在使用此代码启动解析服务器 5。我更改了服务器硬件,并在新的服务器硬件上安装了新的解析服务器。我安装了最新的解析服务器 6,但此代码不再起作用。我应该在此代码中更改什么才能再次工作?

var express = require('express');
var ParseServer = require('parse-server').ParseServer;
var app = express();
var mountPath = '/...';

var api = new ParseServer({
  databaseURI: 'mongodb://...',
  appId      : '...',
  masterKey  : '...',
  serverURL  : 'http://127.0.0.1:...',
  publicServerURL: '...',
  cloud: '...',
  allowClientClassCreation: false
});
app.use(mountPath, api);

var port = ...;
var httpServer = require('http').createServer(app);
httpServer.listen(port, function() {
    console.log('parse-server running on port ' + port + '.');
});

我收到的错误消息:

TypeError: Router.use() requires a middleware function but got a Object
    at Function.use (/home/ubuntu/parse/node_modules/express/lib/router/index.js:469:13)
    at Function.<anonymous> (/home/ubuntu/parse/node_modules/express/lib/application.js:227:21)
    at Array.forEach (<anonymous>)
    at Function.use (/home/ubuntu/parse/node_modules/express/lib/application.js:224:7)
    at Object.<anonymous> (/home/ubuntu/parse/armenianChurches.js:20:5)
    at Module._compile (node:internal/modules/cjs/loader:1256:14)
    at Module._extensions..js (node:internal/modules/cjs/loader:1310:10)
    at Module.load (node:internal/modules/cjs/loader:1119:32)
    at Module._load (node:internal/modules/cjs/loader:960:12)
    at Object.<anonymous> (/home/ubuntu/parse/node_modules/pm2/lib/ProcessContainerFork.js:33:23)
解析 解析服务器

评论


答:

0赞 M Bouchard 10/31/2023 #1

替换为app.use(mountPath, api);app.use(mountPath, api.app);

此外,您需要在此之前添加,如果您运行的 JS 版本在顶层不支持此功能,则将其放入await api.start();async functionapi.start().then(()=>{ app.use(mountPath, api.app); })

完成这 2 次更改后,服务器将运行;如果我只做第一件事,服务器似乎启动了,但客户端什么也做不了。

查看 https://github.com/parse-community/parse-server/blob/alpha/6.0.0.md

但是,最重要的是,由于该功能不再默认接受所有地址,它破坏了masterKey访问。您可能需要对此进行配置。masterKeyIps