Попытка использовать 'pkg' для сборки приложения 'nextjs' приводит к ошибкам зависимости и / или 404 ошибкам после сборки - PullRequest
0 голосов
/ 28 августа 2018

Я пытаюсь создать исполняемый файл небольшого примера приложения NextJS на основе примера здесь с использованием zeit / pkg . Проблема в том, что единственная возможная точка входа ( server.js ), по-видимому, дает мне кучу ошибок, которые в настоящее время не перечислены в их проблемах, связанных с компиляцией веб-пакетов.

Если вы хотите воспроизвести только , следуйте инструкциям здесь , а затем добавьте pkg. Также - вот вывод ошибки ниже.

ОШИБКА Не удалось скомпилировать с 2 ошибками
10:48:35 утра Эти зависимости не были найдены:

  • @ babel / runtime / helpers / extends в D: /snapshot/pkg-ssr/node_modules/next/dist/lib/app.js
  • WebPack-горячий промежуточный слой / клиент? AUTOCONNECT = ложь и наложение = ложь и перезагружать = истина в D: /snapshot/pkg-ssr/node_modules/next/dist/client/webpack-hot-middleware-client.js

Чтобы установить их, вы можете запустить: npm install --save @ Babel / выполнения / хелперы / продолжается WebPack-горячего промежуточного программного обеспечения / клиент? Autoconnect = ложь и наложение = ложь и перезагрузить = TRUE (узел: 15964) Предупреждение об устаревании: Module.chunks: Использование Module.forEachChunk / mapChunks / getNumberOfChunks / isInChunk / addChunk / removeChunk вместо

Готов в http://localhost:3000 Клиент пингует, но нет записи для страницы: / about {Ошибка: не удается найти модуль 'D: _experiments \ pkg-ssr.next \ встроенный manifest.json' в Function.Module._resolveFilename (внутренний / modules / cjs / loader.js: 592: 15) в Function.Module._resolveFilename (pkg / prelude / bootstrap.js: 1278: 46) в Function.Module._load (внутренний / modules / cjs / loader.js: 518: 25) в Module.require (внутренняя / modules / cjs / loader.js: 648: 17) в Module.require (pkg / prelude / bootstrap.js: 1157: 31) по требованию (внутренний / modules / cjs / helpers.js: 20: 18) в _callee3 $ (D: \ snapshot \ pkg-ssr \ node_modules \ next \ dist \ server \ render.js: 202: 29) в tryCatch (D: \ snapshot \ pkg-ssr \ node_modules \ регенератор-время выполнения \ runtime.js: 62: 40) в Generator.invoke [как _invoke] (D: \ snapshot \ pkg-ssr \ node_modules \ регенератор-время выполнения \ runtime.js: 296: 22) в Generator.forEach.prototype. (анонимная функция) [как далее] (D: \ snapshot \ pkg-ssr \ node_modules \ регенератор-runtime \ runtime.js: 114: 21) на шаге (D: \ snapshot \ pkg-ssr \ node_modules \ @babel \ runtime \ helpers \ asyncToGenerator.js: 12: 30) в _next (D: \ snapshot \ pkg-ssr \ node_modules \ @babel \ runtime \ helpers \ asyncToGenerator.js: 27: 9) at process._tickCallback (internal / process / next_tick.js: 68: 7) code: 'MODULE_NOT_FOUND'} Клиент пингует, но нет записи для страница: / about {Ошибка: не удается найти модуль 'D: _experiments \ pkg-ssr.next \ встроенный manifest.json' в Function.Module._resolveFilename (внутренний / modules / cjs / loader.js: 592: 15) в Function.Module._resolveFilename (pkg / prelude / bootstrap.js: 1278: 46) в Function.Module._load (внутренняя / modules / cjs / loader.js: 518: 25) в Module.require (внутренняя / modules / cjs / loader.js: 648: 17) в Module.require (pkg / prelude / bootstrap.js: 1157: 31) по требованию (внутренний / modules / cjs / helpers.js: 20: 18) в _callee3 $ (D: \ snapshot \ pkg-ssr \ node_modules \ next \ dist \ server \ render.js: 202: 29) в tryCatch (D: \ snapshot \ pkg-ssr \ node_modules \ регенератор-время выполнения \ runtime.js: 62: 40) в Generator.invoke [как _invoke] (D: \ snapshot \ pkg-ssr \ node_modules \ регенератор-время выполнения \ runtime.js: 296: 22) в Generator.forEach.prototype. (анонимная функция) [как далее] (D: \ snapshot \ pkg-ssr \ node_modules \ регенератор-runtime \ runtime.js: 114: 21) на шаге (D: \ snapshot \ pkg-ssr \ node_modules \ @babel \ runtime \ helpers \ asyncToGenerator.js: 12: 30) в _next (D: \ snapshot \ pkg-ssr \ node_modules \ @babel \ runtime \ helpers \ asyncToGenerator.js: 27: 9) at process._tickCallback (внутренний / process / next_tick.js: 68: 7) код: 'MODULE_NOT_FOUND'}

1 Ответ

0 голосов
/ 04 сентября 2018

В моем случае проблема заключалась в том, что я не упаковывал встроенное приложение. Мне нужно было сделать несколько вещей:

  • укажите assets и scripts в package.json, как показано ниже (обратите внимание, что dist на самом деле сервер в моем случае, потому что у меня был собственный сервер и промежуточное ПО)

    "pkg": { "assets": [ ".next/**/*" ], "scripts": [ ".next/dist/**/*.js" ] },

  • сначала создайте приложение, используя next build
  • затем убедитесь, что каким бы образом я ни создавал пакет, я использовал package.json. Для меня лучшей командой был их пример по умолчанию : pkg .

См. Следующую статью Майка Хсу на случай, если вы хотите репо и инструкции для сравнения: https://medium.com/@evenchange4/deploy-a-commercial-next-js-application-with-pkg-and-docker-5c73d4af2ee

...