mongodb - 在 'next build' 期间 ECONNREFUSED 。与 'next dev' 配合使用

标签 mongodb build yarn next.js

我有一个非常简单的 NextJS 9.3.5 项目。
目前,它有一个页面/用户和一个 pages/api/users,用于从本地 MongoDB 表中检索所有用户

它使用“next dev”在本地构建良好
但是,它在“下一次构建”时失败,出现 ECONNREFUSED 错误


页面/用户

import fetch from "node-fetch"
import Link from "next/link"

export async function getStaticProps({ params }) {
  const res = await fetch(`http://${process.env.VERCEL_URL}/api/users`)
  const users = await res.json()
  return { props: { users } }
}

export default function Users({ users }) {
  return (
    <ul>
      {users.map(user => (
        <li key={user.id}>
          <Link href="/user/[id]" as={`/user/${user._id}`}>
            <a>{user.name}</a>
          </Link>
        </li>
      ))}
    </ul>
  );
}

页面/api/用户
import mongoMiddleware from "../../lib/api/mongo-middleware";
import apiHandler from "../../lib/api/api-handler";

export default mongoMiddleware(async (req, res, connection, models) => {
  const {
    method
  } = req

  apiHandler(res, method, {
    GET: (response) => {
      models.User.find({}, (error, users) => {
        if (error) {
          connection.close();
          response.status(500).json({ error });
        } else {
          connection.close();
          response.status(200).json(users);
        }
      })
    }
  });
})

yarn 构建
yarn run v1.22.4
$ next build
Browserslist: caniuse-lite is outdated. Please run next command `yarn upgrade`
> Info: Loaded env from .env
Creating an optimized production build

Compiled successfully.

> Info: Loaded env from .env
Automatically optimizing pages ..
Error occurred prerendering page "/users". Read more: https://err.sh/next.js/prerender-error:
FetchError: request to http://localhost:3000/api/users failed, reason: connect ECONNREFUSED 127.0.0.1:3000

任何想法出了什么问题?特别是当它与“下一个开发者”一起工作时?

谢谢你。

最佳答案

几天前我尝试了同样的方法但没有工作......因为当我们构建应用程序时,我们没有可用的本地主机......检查文档的这一部分 - https://nextjs.org/docs/basic-features/data-fetching#write-server-side-code-directly - 说:“你不应该获取来自 getStaticProps 的 API 路由...” -

(Next.js 9.3.6)

关于mongodb - 在 'next build' 期间 ECONNREFUSED 。与 'next dev' 配合使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61452675/

相关文章:

regex - 删除 MongoDB 集合中字符串字段值中的所有空格

c++ - 如何实现.h文件中定义的类c++

scala - Spark on YARN 和 spark-bigquery 连接器

apache-spark - 纱: Spark 中的执行者数和执行者核数有什么区别?

hadoop - 在本地模式下限制Spark作业

java - 如何通过java将json数据推送到MONGODB中的数组对象中

mongodb - Mongodb $filter(聚合)只获取数组的一个元素

c# - 如何在 Nuke 构建中获取项目的 OutputPath

java - 使用 ant : How to add external library files to the executable jar 创建可执行 jar

mongodb指南针查询日期范围内的objectId