【发布时间】:2020-10-28 16:38:41
【问题描述】:
问题
我有一个在 MacOS Catalina 10.15 上运行的快速服务器,并且没有解决任何内部承诺。不需要任何东西的普通 API 都可以工作并且已经用 Postman 测试过,但是任何需要查询我的数据库的东西都不起作用。在邮递员上,它只是无限加载请求,在我的 React 前端,我收到“代理错误:无法代理请求(econnreset)”。注意:同一台 express 服务器已在我的 Windows 和 Linux 机器上进行了测试,并且运行良好,因此我认为这是 Mac 问题。
我的服务器代码在这里:
#!/usr/bin/env node
// Module dependencies;
const app = require('../app');
const http = require('http');
const { normalizePort, onListening } = require('./config');
// Get port from environment and store in Express;
const port = normalizePort('1234');
app.set('port', port);
// Create HTTP server;
const server = http.createServer(app);
// Event listener for HTTP server "error" event;
const onError = error => {
if (error.syscall !== 'listen') throw error;
const bind = typeof port === 'string'
? 'Pipe ' + port
: 'Port ' + port;
switch (error.code) { // Handle specific listen errors with friendly messages;
case 'EACCES':
console.error(bind + ' requires elevated privileges');
process.exit(1);
break;
case 'EADDRINUSE':
console.error(bind + ' is already in use');
process.exit(1);
break;
default:
throw error;
}
}
// Listen on provided port, on all network interfaces with event listeners and event handlers;
server.listen(port);
console.log(`server now listening on port: ${port}`)
server.on('error', onError);
server.on('listening', onListening(server));
这是导入的应用程序:
// Module dependencies;
const express = require("express");
const path = require("path");
const logger = require("morgan");
const helmet = require("helmet");
const compression = require("compression");
const cors = require("cors");
const passport = require("passport");
require("dotenv").config();
// Our database instance;
const db = require("./database");
// Our apiRouter;
const apiRouter = require("./routes/index");
// Instantiate our express application;
const app = express();
// A helper function to create our app with configurations and middleware;
const configureApp = () => {
app.use(helmet());
app.use(logger("dev"));
app.use(express.json());
app.use(express.urlencoded({ extended: false }));
app.use(compression());
// Passport middleware
app.use(passport.initialize());
require("./bin/passport")(passport);
app.use(
cors({
origin: "*",
})
);
// Mount our apiRouter;
app.use("/api", apiRouter);
};
// Main function declaration;
const bootApp = async () => {
await configureApp();
//await seedDb();
//db.sync();
};
// Main function invocation;
bootApp();
// Export our app, so that it can be imported in the www file;
module.exports = app;
我已经用 pgadmin 测试了我的数据库凭据,所以这不是问题。另外,我的数据库对它没有任何限制,对所有地址都是开放的。这是我试图请求的 API。我已经对其进行了消毒。通过使用 console.log,我确定 const 用户 await 永远不会得到解决。
//login
router.post("/login", async (req, res, next) => {
try {
const { email, password } = req.body;
if (!email || !password) {
throw new ErrorHandler(400, "Missing required fields");
}
const user = await User.findOne({ where: { email: "employee@example.com" } });
if (!user) {
throw new ErrorHandler(404, "Incorrect credentials");
}
const isMatch = await bcrypt.compare(password, user.password);
res.status(200).json(user);
} catch (err) {
next(err);
}
});
您认为这可能是网络问题造成的问题吗?我已将网络设置重置为默认设置并重新安装了 node_modules、npm 和 node。如果这会导致任何问题,我已经用自制软件安装了节点。这主要是一个 mac 问题,因为我在我的 windows 或 linux 机器上从来没有遇到过这个问题。谢谢。
【问题讨论】:
标签: node.js reactjs macos express network-programming