ECONNREFUSED во время «следующей сборки». Прекрасно работает со «следующим разработчиком» - PullRequest
1 голос
/ 27 апреля 2020

У меня очень простой проект Next JS 9.3.5. На данный момент у него есть единственные страницы / пользователи и одна pages/api/users, которая извлекает всех пользователей из локальной таблицы MongoDB

. Она прекрасно строится локально, используя 'next dev', но не может 'next сборка с ошибкой 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 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

Есть идеи, что идет не так? особенно когда он отлично работает со «следующим разработчиком»?

Спасибо.

1 Ответ

1 голос
/ 01 мая 2020

Я пробовал те же несколько дней go и не работал ... потому что, когда мы собираем приложение, у нас нет локального хоста ... проверьте эту часть do c - https://nextjs.org/docs/basic-features/data-fetching#write -server-side-code-direct - что говорит: "Вы не должны извлекать маршрут API из getStaticProps ..." -

(Далее. js 9,3,6)

...