Node.js NextJS/Vercel/MongoDB FetchError:请求http://localhost:3000/api/gear 失败,原因:connect ECONREFUSSED 127.0.0.1:3000
我使用NextJS对MongoDB进行API调用。当我转到API时,我看到MongoDB查询返回。然而,当我试图将该数据提取到网页时,我得到一个500内部服务器错误。函数日志显示以下错误:Node.js NextJS/Vercel/MongoDB FetchError:请求http://localhost:3000/api/gear 失败,原因:connect ECONREFUSSED 127.0.0.1:3000,node.js,mongodb,next.js,vercel,Node.js,Mongodb,Next.js,Vercel,我使用NextJS对MongoDB进行API调用。当我转到API时,我看到MongoDB查询返回。然而,当我试图将该数据提取到网页时,我得到一个500内部服务器错误。函数日志显示以下错误: 2020-05-27T17:17:02.129Z 5a0c88b0-da63-4225-acf1-ea1d589ff438 ERROR FetchError: request to http://localhost:3000/api/gear failed, reason: connect E
2020-05-27T17:17:02.129Z 5a0c88b0-da63-4225-acf1-ea1d589ff438 ERROR FetchError: request to http://localhost:3000/api/gear failed, reason: connect ECONNREFUSED 127.0.0.1:3000
at ClientRequest.<anonymous> (/var/task/node_modules/next/dist/compiled/node-fetch/index.js:1:147710)
at ClientRequest.emit (events.js:310:20)
at Socket.socketErrorListener (_http_client.js:426:9)
at Socket.emit (events.js:310:20)
at emitErrorNT (internal/streams/destroy.js:92:8)
at emitErrorAndCloseNT (internal/streams/destroy.js:60:3)
at processTicksAndRejections (internal/process/task_queues.js:84:21) {
message: 'request to http://localhost:3000/api/gear failed, reason: connect ECONNREFUSED 127.0.0.1:3000',
type: 'system',
errno: 'ECONNREFUSED',
code: 'ECONNREFUSED'
}
api/gear.js
import nextConnect from 'next-connect';
import middleware from '../../middleware/database';
const handler = nextConnect();
handler.use(middleware);
handler.get(async (req, res) => {
let gear = await req.db.collection('gear').find({}).sort({gear: 1}).toArray();
res.json(gear);
});
export default handler;
database.js
import { MongoClient } from 'mongodb';
import nextConnect from 'next-connect';
const client = new MongoClient(process.env.MONGOURL, {
useNewUrlParser: true,
useUnifiedTopology: true,
});
async function database(req, res, next) {
if (!client.isConnected()) await client.connect();
req.dbClient = client;
req.db = client.db('BassTabs');
return next();
}
const middleware = nextConnect();
middleware.use(database);
export default middleware;
在Vercel上托管应用程序时,需要将获取URL更改为
https://my-bassist-chris.mybassistchris.now.sh/api/gear
,因为这就是数据的来源
在本地运行应用程序时,使用
localhost
在Vercel上托管应用程序时,需要将获取URL更改为https://my-bassist-chris.mybassistchris.now.sh/api/gear
,因为这就是数据的来源
在本地运行应用程序时,您使用
localhost
伙计,我觉得自己像个傻瓜,这就是问题所在。谢谢你的帮助!伙计,我觉得自己像个傻瓜,这就是问题所在。谢谢你的帮助!
import { MongoClient } from 'mongodb';
import nextConnect from 'next-connect';
const client = new MongoClient(process.env.MONGOURL, {
useNewUrlParser: true,
useUnifiedTopology: true,
});
async function database(req, res, next) {
if (!client.isConnected()) await client.connect();
req.dbClient = client;
req.db = client.db('BassTabs');
return next();
}
const middleware = nextConnect();
middleware.use(database);
export default middleware;