เกิดข้อผิดพลาดในการเริ่มแอป Nuxt.js: ไม่พบไฟล์บิลด์

$ npm run start

> [email protected] start /home/app/ui/web
> nuxt start

FATAL  No build files found in /home/app/ui/web/.nuxt/dist/server.
Use either `nuxt build` or `builder.build()` or start nuxt in development mode.

เกิดข้อผิดพลาดเมื่อเริ่มแอป Nuxt.js ในอิมเมจ Docker ที่สร้างขึ้นแบบหลายขั้นตอน:

  1. npm ci && npm run build ภายในอิมเมจขั้นตอนการสร้าง
  2. คัดลอกแอปที่สร้างขึ้น .nuxt และ package.json และ node_modules ลงในอิมเมจรันสเตจด้วย

รายละเอียดบางอย่างเกี่ยวกับสภาพแวดล้อม

โหมดแอปพลิเคชัน Nuxt.js คือ 'spa' ไฟล์ที่หายไปปรากฏอยู่ในอิมเมจสุดท้ายจริงๆ ไม่มีการใช้วอลุ่ม/การเมานต์ ชื่อผู้ใช้ระบบปฏิบัติการจะแตกต่างกันระหว่างอิมเมจ build-stage และ run-stage อย่างไรก็ตาม (หวังว่า) ไม่น่าจะเป็นเช่นนั้น

Nuxt.js 2.12.2, Node.js 14.16.0


person Sand Pipersburg    schedule 07.04.2021    source แหล่งที่มา
comment
โปรดระบุตัวอย่างที่ทำซ้ำได้น้อยที่สุด รวมถึง Dockerfile ของคุณและวิธีเริ่มต้นคอนเทนเนอร์ โดยเฉพาะอย่างยิ่ง คุณกำลังเขียนทับโค้ดของรูปภาพด้วยวอลุ่มหรือเมานท์แบบผูกหรือไม่   -  person David Maze    schedule 07.04.2021
comment
@DavidMaze ขอบคุณสำหรับคำตอบที่รวดเร็ว ฉันพบสาเหตุที่แท้จริงแล้วและอัปเดตคำถามพร้อมรายละเอียดสภาพแวดล้อมแล้ว ขอบคุณมาก!   -  person Sand Pipersburg    schedule 07.04.2021


คำตอบ (1)


nuxt.config.js หายไป

หลังจากที่ฉันคัดลอกมันลงในอิมเมจรันสเตจและเปลี่ยนจาก localhost เป็น 0.0.0.0 สำหรับคุณสมบัติ server.host ภายใน nuxt.config.js คอนเทนเนอร์ก็ทำงานได้ดี:

> [email protected] start /home/app/ui/web
> nuxt start

ℹ Listening on: http://172.17.0.2:3000/

ดังนั้นรายการที่จำเป็นสำหรับการรัน prod build ในโหมดการปรับใช้เซิร์ฟเวอร์จึง (ดูเหมือน) ดังต่อไปนี้:

/.nuxt
/node_modules
nuxt.config.js
package.json

เอกสารประกอบมีความคลุมเครือเกี่ยวกับสิ่งที่ควรรวมไว้ในสิ่งประดิษฐ์สุดท้าย: https://nuxtjs.org/docs/2.x/get-started/commands/#server-deployment

คำถาม SO อื่นที่เป็นแรงบันดาลใจในการแก้ไขปัญหา: ข้อผิดพลาดในการปรับใช้ Nuxt: ทรัพยากรเซิร์ฟเวอร์คือ ไม่สามารถใช้ได้

อัปเดต

อัปเดต Nuxt เป็น 2.15.3 เปลี่ยนจาก ad-hoc npm build เป็น build ที่ทำซ้ำได้ผ่าน yarn

ขั้นตอนการสร้างกลายเป็น yarn install --frozen-lockfile && yarn build นอกจากนี้ การคัดลอก node_modules จาก build stage ไปยัง run stage จะนำการพึ่งพาการพัฒนามาสู่ prod, b/c prod build ของแอป Nuxt จำเป็นต้องมีการพึ่งพาการพัฒนา ดังนั้นในระหว่างระยะการรัน ให้สลับไปที่ yarn install --frozen-lockfile --production=true แทนที่จะคัดลอก node_modules จากระยะการ build ก่อนหน้า

รายการที่จำเป็นคัดลอกมาจากขั้นตอนการสร้างสำหรับการเรียกใช้แอป prod Nuxt ในโหมดการปรับใช้เซิร์ฟเวอร์ (https://nuxtjs.org/docs/2.x/features/deployment-targets/#server-hosting) จึงมีดังต่อไปนี้:

/.nuxt
nuxt.config.js
package.json
yarn.lock
person Sand Pipersburg    schedule 07.04.2021