0

Как исправить ошибку "модуль не найден" при деплое Next.js на Vercel

11

Проблема с деплоем приложения на Next.js в Vercel

У меня есть приложение на Next.js, которое работает на моем компьютере и ранее развертывалось на Vercel без проблем. Однако у меня возникла ошибка при сборке на Vercel, которая выглядит следующим образом:

Я пробовал удалить папку node_modules и несколько раз запускал команду npm install, но ничего не помогло.

Буду признателен за любую помощь. Спасибо!

Ошибка при запуске npm run build:

Error: Cannot find module '../build/output/log'
Require stack:
- /vercel/5ccaedc9/node_modules/.bin/next
...
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! <email> build: next build
npm ERR! Exit status 1
npm ERR! Failed at the <email> build script.

Вот содержимое моего файла package.json:

{
  "name": "tdwcks",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "dev": "next",
    "build": "next build",
    "start": "next start"
  },
  "keywords": [],
  "author": "",
  "license": "ISC",
  "dependencies": {
    "cjs": "0.0.11",
    "core-util-is": "^1.0.2",
    "framer-motion": "^1.11.0",
    "gray-matter": "^4.0.2",
    "next": "^9.4.4",
    "raw-loader": "^4.0.1",
    "react": "^16.13.1",
    "react-dom": "^16.13.1",
    "react-ga": "^3.0.0",
    "react-markdown": "^4.3.1",
    "react-player": "^2.2.0",
    "react-scripts": "^3.4.1"
  },
  "devDependencies": {
    "postcss-preset-env": "^6.7.0",
    "tailwindcss": "^1.4.6"
  }
}

Если нужны дополнительные данные для диагностики проблемы, дайте знать!

5 ответ(ов)

0

Вам нужно внести изменения в ваш package.json, чтобы использовать бинарник next, который находится в директории node_modules/next. Вот как это можно сделать:

"scripts": {
  "start": "node_modules/next/dist/bin/next start -p $PORT"
}

Хотя это не самый элегантный способ, он работает. Если у вас есть другие проблемы или вопросы по Next.js, не стесняйтесь обращаться!

0

Этот ответ сработал для меня: https://stackoverflow.com/a/55541435/3051080

Суть: обновите кэш git:

git rm -r --cached .
git add --all .
git commit -a -m "Версионирование неотслеживаемых файлов"
git push origin master
0

Ошибка, о которой вы говорите, обычно возникает, если вы случайно добавили папку node_modules в репозиторий Git вашего проекта.

Попробуйте выполнить следующие шаги:

  1. Убедитесь, что все изменения закоммичены и у вас чистый рабочий каталог.
  2. Выполните команду rm -rf node_modules (или удалите папку на Windows).
  3. Выполните git add -A, затем git commit -m "Удалить все файлы модулей".
  4. Добавьте node_modules в файл .gitignore (не забудьте сохранить изменения).
  5. Выполните git add -A, затем git commit -m "Обновить игнорируемые файлы".
  6. Проверьте, что ваш каталог полностью чист, с помощью git status.
  7. Затем выполните git push. Это развертывание должно пройти успешно на Vercel.
  8. В конце, снова выполните npm i или yarn, в зависимости от вашего менеджера пакетов, чтобы восстановить рабочую локальную копию.
0

У меня была такая же проблема. В GitHub Desktop я заметил, что файл с заглавной буквой в редакторе не отображался так в GitHub Desktop. Я исправил написание, чтобы оно совпадало с тем, что показывал GitHub, и проект собрался успешно.

0

Похоже, что ваша проблема может быть связана с конфликтами в зависимости yarn и модулем next, который находится в node_modules/next/dist/bin/next.

Что касается вашего вопроса о том, почему после сборки вашего проекта с next вы все равно зависите от относительно тяжелого модуля next в продакшене, то это связано с тем, что next требует выполнения некоторых операций во время выполнения, связанных с маршрутизацией, рендерингом и другими функциями. Даже после сборки проекта, next предоставляет необходимые среда и API для работы приложения, что и объясняет его присутствие в зависимости в конечной сборке.

Хотя вы правы, что концепция сборки предполагает определенную независимость от инструментов сборки, в случае с фреймворками, такими как next, они могут требовать сохранения части своей инфраструктуры для обеспечения корректной работы приложения в продакшене. Это позволяет избежать лишних проблем с совместимостью и гарантирует, что приложение будет функционировать как задумано.

Чтобы ответить на вопрос, пожалуйста, войдите или зарегистрируйтесь