我已经用next.js建立了我的投资组合网页,现在我需要测试它。为了测试express服务器,我使用了supertest。但问题是我需要重构express来使用它。因为supertest在监听之前需要访问app()。
我开始使用在node.js app中实现的方法,将express代码放在app.js中,然后在index.js中调用它。
const express = require("express");
const server = express();
const authService = require("./services/auth");
const bodyParser = require("body-parser");
//put all the middlewares here
module.exports = server;
然后在index.js中
const server = require("express")();
// const { parse } = require("url");
const next = require("next");
const routes = require("../routes");
const path = require("path");
require("./mongodb");
const dev = process.env.NODE_ENV !== "production";
const app = next({ dev });
// const handle = app.getRequestHandler(); //this is built in next route handler
const handle = routes.getRequestHandler(app);
app
.prepare()
.then(() => {
const server = require("./app");
//I required this outside too but it did not solve the issue
server.listen(3000, (err) => {
if (err) throw err;
console.log("> Ready on http://localhost:3000");
});
})
.catch((ex) => {
console.error(ex.stack);
process.exit(1);
});
有了这个设置,express正在侦听,我可以连接到mongodb,在启动过程中没有问题。
当我请求localhost:3000时,localhost没有响应,它一直旋转直到超时
3条答案
按热度按时间dgtucam11#
创建测试客户端:
使用以下工具测试您的API:
yqhsw0fo2#
对于那些希望添加查询参数的用户,答案如下:
blmhpbnm3#
我刚刚发布了一个新的npm软件包,在这里处理这种情况:https://www.npmjs.com/package/nextjs-http-supertest
欢迎测试并给予我反馈!