我目前正尝试在我的express应用中使用parse server和express,但这是我第一次使用服务器,我无法理解渲染和路由是如何工作的。以下是我的代码:
const express = require("express");
const next = require("next");
const ParseServer = require('parse-server').ParseServer;
const path = require('path');
const PORT = process.env.PORT || 1338;
const dev = process.env.NODE_ENV !== "production";
const hostname = 'localhost'
const app = next({ dev, hostname, PORT });
const handle = app.getRequestHandler();
const databaseUri = 'mongodb+srv://';
if (!databaseUri) {
console.log('DATABASE_URI not specified, falling back to localhost.');
}
const config = {
databaseURI: databaseUri || 'mongodb+srv://',
cloud: process.env.CLOUD_CODE_MAIN || __dirname + '/cloud/main.js',
appId: process.env.APP_ID || '',
masterKey: process.env.MASTER_KEY || '', //Add your master key here. Keep it secret!
serverURL: process.env.SERVER_URL || 'http://localhost:1338/parse', // Don't forget to change to https if needed
liveQuery: {
classNames: ['Posts', 'Comments'], // List of classes to support for query subscriptions
},
};
app
.prepare()
.then(() => {
const server = express();
const showRoutes = require("./routes/index.js");
server.use("/api", showRoutes(server));
server.use('/pages', express.static(path.join(__dirname, '/pages')));
const mountPath = process.env.PARSE_MOUNT || '/parse';
const api = new ParseServer(config);
server.use(mountPath, api);
// server.get("*", (req, res) => {
// return handle(req, res);
// });
// server.get('/', function (req, res) {
// res.status(200).send('I dream of being a website. Please star the parse-server repo on GitHub!');
// });
server.get('/',function(req,res){
return app.render(req, res, '/pages/index', req.query)
});
server.get('/test', function (req, res) {
res.sendFile(path.join(__dirname, '/public/test.html'));
});
const httpServer = require('http').createServer(server);
httpServer.listen(PORT, function () {
console.log('parse-server-example running on port ' + PORT + '.');
});
ParseServer.createLiveQueryServer(httpServer);
module.exports = {
app,
config,
}
}
)
当我运行这段代码时,主页加载为空白,但是终端没有显示任何错误。我还在索引页中添加了render()函数,但是它似乎不起作用。
如果有人能指出我所犯的任何设置错误,并解释我如何使用parse和express配置nextjs以正确路由/呈现,我将非常感激。
在网上很难找到关于以下设置的帮助,所以如果有人能指出任何示例github repos或学习材料,这将是非常有帮助的。
谢谢你!
1条答案
按热度按时间iyr7buue1#
我认为您需要添加以下内容:
老实说,我建议您运行两个Web服务器:一个用于next.js应用程序(可能使用
create-next-app
脚本),另一个用于Parse Server应用程序。无论如何,如果您决定将这两个应用程序放在同一个服务器中,我将首先尝试设置next.js。一旦它开始工作,我将添加Parse Server代码。