NodeJS/Express: app.use("/parse") throws Router.use() 需要一个中间件函数但是得到一个对象错误

问题描述 投票:0回答:1

我正在遵循 parse-server 安装指南,更准确地说是尝试使用 NodeJS 和 Express 安装它。

如指南中所述,这是我设置服务器的代码:

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

var api = new ParseServer({
    databaseURI: 'postgres://postgres:myStrongPassword@localhost:5432/postgres',
    appId: 'app',
    masterKey: 'master',
    serverURL: 'http://www.example.com:1337/parse'
});

app.use('/parse', api);

var httpServer = require('http').createServer(app);

httpServer.listen(1337, function() {
    console.log('parse-server running on http://www.example.com:1337/parse');
});

但是,当尝试使用

node index.js
启动服务器时,我得到这个错误:

/root/node_modules/express/lib/router/index.js:469
      throw new TypeError('Router.use() requires a middleware function but got a ' + gettype(fn))
      ^

TypeError: Router.use() requires a middleware function but got a Object
    at Function.use (/root/node_modules/express/lib/router/index.js:469:13)
    at Function.<anonymous> (/root/node_modules/express/lib/application.js:227:21)
    at Array.forEach (<anonymous>)
    at Function.use (/root/node_modules/express/lib/application.js:224:7)
    at Object.<anonymous> (/root/parse-test/index.js:12:5)
    at Module._compile (node:internal/modules/cjs/loader:1254:14)
    at Module._extensions..js (node:internal/modules/cjs/loader:1308:10)
    at Module.load (node:internal/modules/cjs/loader:1117:32)
    at Module._load (node:internal/modules/cjs/loader:958:12)
    at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:81:12)

Node.js v18.14.2

你能帮我解决这个问题吗

谢谢

node.js express parse-server
1个回答
0
投票

根据文档 (https://github.com/parse-community/parse-server#parse-server--express),您离得不远,您需要:

app.use('/parse', api.app);

完整代码:

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

var api = new ParseServer({
    databaseURI: 'postgres://postgres:myStrongPassword@localhost:5432/postgres',
    appId: 'app',
    masterKey: 'master',
    serverURL: 'http://www.example.com:1337/parse'
});

app.use('/parse', api.app);

var httpServer = require('http').createServer(app);

httpServer.listen(1337, function() {
    console.log('parse-server running on http://www.example.com:1337/parse');
});

您可能会发现您还需要这一行:

// Start server
await api.start();
© www.soinside.com 2019 - 2024. All rights reserved.