最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

React中Next.js靜態(tài)資源與public目錄示例詳解

 更新時(shí)間:2026年03月06日 08:24:44   作者:dbt@L  
React作為當(dāng)前前端開發(fā)領(lǐng)域最流行的框架之一,組件化開發(fā)是其核心概念之一,下面這篇文章主要介紹了React中Next.js靜態(tài)資源與public目錄的相關(guān)資料,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下

問題場(chǎng)景

部署 Next.js 應(yīng)用后,發(fā)現(xiàn)所有圖片都顯示不出來,頁(yè)面上一片空白圖標(biāo)。本地開發(fā)明明是好的,為什么部署后就不行了?

理解 Next.js 的構(gòu)建產(chǎn)物

Next.js 使用 output: 'standalone' 模式構(gòu)建時(shí),會(huì)生成一個(gè)獨(dú)立的部署包:

.next/
└── standalone/        ← 部署包
    ├── server.js      ← 啟動(dòng)文件
    ├── node_modules/  ← 精簡(jiǎn)的依賴
    └── .next/         ← 編譯后的代碼

問題來了public 目錄和 .next/static 目錄不會(huì)自動(dòng)包含進(jìn)去!

public 目錄是什么?

public 目錄用于存放靜態(tài)資源,如圖片、字體、favicon 等:

project/
├── public/
│   ├── images/
│   │   ├── logo.png
│   │   └── banner.jpg
│   ├── fonts/
│   │   └── custom.woff2
│   └── favicon.ico
└── src/

在代碼中可以直接用根路徑引用:

// 引用 public/images/logo.png
<img src="/images/logo.png" alt="Logo" />

// 引用 public/favicon.ico
<link rel="icon" href="/favicon.ico" rel="external nofollow"  />

為什么部署后圖片不顯示?

使用 standalone 模式時(shí),官方文檔明確說明:

public.next/static 目錄需要手動(dòng)復(fù)制到 standalone 目錄

構(gòu)建后需要手動(dòng)操作:

# 構(gòu)建
npm run build

# 復(fù)制靜態(tài)資源(必須?。?
cp -r public .next/standalone/public
cp -r .next/static .next/standalone/.next/static

目錄結(jié)構(gòu)對(duì)比

錯(cuò)誤的部署包(缺少靜態(tài)資源)

.next/standalone/
├── server.js
└── .next/
    └── server/     ← 只有服務(wù)端代碼

正確的部署包

.next/standalone/
├── server.js
├── public/           ← 手動(dòng)復(fù)制
│   └── images/
│       └── logo.png
└── .next/
    ├── server/
    └── static/       ← 手動(dòng)復(fù)制
        └── chunks/

使用 Docker 時(shí)的處理

如果用 Docker 部署,需要在 Dockerfile 中添加復(fù)制步驟:

FROM node:18-alpine

WORKDIR /app

# 復(fù)制構(gòu)建產(chǎn)物
COPY .next/standalone ./

# 復(fù)制靜態(tài)資源(關(guān)鍵步驟!)
COPY public ./public
COPY .next/static ./.next/static

EXPOSE 3000
CMD ["node", "server.js"]

使用腳本自動(dòng)化

可以寫一個(gè)部署腳本自動(dòng)處理:

#!/bin/bash

# 1. 構(gòu)建
npm run build

# 2. 復(fù)制靜態(tài)資源到 standalone
cp -r public .next/standalone/public
cp -r .next/static .next/standalone/.next/static

# 3. 打包部署
cd .next/standalone
tar -czf deploy.tar.gz .

echo "部署包已生成: .next/standalone/deploy.tar.gz"

static 和 public 的區(qū)別

目錄內(nèi)容來源
public/原始靜態(tài)資源開發(fā)者手動(dòng)放入
.next/static/編譯后的 JS/CSSNext.js 構(gòu)建生成

兩者都需要復(fù)制,缺一不可:

  • public → 圖片、字體不顯示
  • .next/static → 頁(yè)面樣式和交互失效

常見問題排查

1. 圖片路徑正確但不顯示

檢查 standalone/public 目錄是否存在且包含圖片文件。

2. 本地正常,部署后異常

確認(rèn)部署流程是否包含復(fù)制靜態(tài)資源的步驟。

3. 部分圖片顯示,部分不顯示

檢查圖片文件名是否有特殊字符或中文,建議使用英文命名。

總結(jié)

步驟說明
1npm run build 構(gòu)建項(xiàng)目
2復(fù)制 publicstandalone/public
3復(fù)制 .next/staticstandalone/.next/static
4部署 standalone 目錄

記住這個(gè)口訣:standalone 模式,靜態(tài)資源要手動(dòng)復(fù)制。這是 Next.js 官方設(shè)計(jì),目的是讓部署包盡可能精簡(jiǎn),由開發(fā)者按需添加資源。

到此這篇關(guān)于React中Next.js靜態(tài)資源與public目錄的文章就介紹到這了,更多相關(guān)React中Next.js與public內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • React Native之TextInput組件解析示例

    React Native之TextInput組件解析示例

    本篇文章主要介紹了React Native之TextInput組件解析示例,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-08-08
  • 詳解使用create-react-app添加css modules、sasss和antd

    詳解使用create-react-app添加css modules、sasss和antd

    這篇文章主要介紹了詳解使用create-react-app添加css modules、sasss和antd,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-07-07
  • 一文帶你了解React中的并發(fā)機(jī)制

    一文帶你了解React中的并發(fā)機(jī)制

    React 18.2.0 引入了一系列并發(fā)機(jī)制的新特性,旨在幫助各位開發(fā)者更好地控制和優(yōu)化應(yīng)用程序的性能和用戶體驗(yàn),下面我們就來看看如何利用這些新特性構(gòu)建更高效、更響應(yīng)式的應(yīng)用程序吧
    2024-03-03
  • react結(jié)合bootstrap實(shí)現(xiàn)評(píng)論功能

    react結(jié)合bootstrap實(shí)現(xiàn)評(píng)論功能

    這篇文章主要為大家詳細(xì)介紹了react結(jié)合bootstrap實(shí)現(xiàn)評(píng)論功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-05-05
  • React實(shí)現(xiàn)隨機(jī)顏色選擇器的示例代碼

    React實(shí)現(xiàn)隨機(jī)顏色選擇器的示例代碼

    顏色選擇器是一個(gè)用于選擇和調(diào)整顏色的工具,它可以讓用戶選擇他們喜歡的顏色,本文主要介紹了React實(shí)現(xiàn)隨機(jī)顏色選擇器的示例代碼,具有一定的參考價(jià)值,感興趣的可以了解一下
    2023-12-12
  • 淺談React多個(gè)setState會(huì)調(diào)用幾次

    淺談React多個(gè)setState會(huì)調(diào)用幾次

    在React的生命周期鉤子和合成事件中,多次執(zhí)行setState,會(huì)被調(diào)用幾次,本文就詳細(xì)的介紹一下,感興趣的可以了解一下
    2021-11-11
  • 實(shí)例講解React 組件

    實(shí)例講解React 組件

    這篇文章主要介紹了React 組件的相關(guān)資料,文中示例代碼非常詳細(xì),幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下
    2020-07-07
  • 詳解React如何優(yōu)雅地根據(jù)prop更新state值

    詳解React如何優(yōu)雅地根據(jù)prop更新state值

    這篇文章主要為大家詳細(xì)介紹了React如何優(yōu)雅地實(shí)現(xiàn)根據(jù)prop更新state值,文中的示例代碼講解詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴可以了解下
    2023-11-11
  • 在React中編寫樣式的六種方式

    在React中編寫樣式的六種方式

    在React中,編寫樣式主要有以下幾種方式,內(nèi)聯(lián)樣式,外部樣式表,CSS Modules,Styled Components,Emotion和Radium這六種樣式,下面我將針對(duì)上面提到的6種方式給出詳細(xì)的代碼示例,需要的朋友可以參考下
    2024-01-01
  • 基于json-render的流式表單渲染方案詳細(xì)解析

    基于json-render的流式表單渲染方案詳細(xì)解析

    json-render是由vercel開源的一項(xiàng)前沿技術(shù),旨在應(yīng)對(duì)ai自動(dòng)生成ui過程中常見的不可控性難題,這篇文章主要介紹了基于json-render的流式表單渲染方案的相關(guān)資料,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2026-06-06

最新評(píng)論

竹溪县| 泉州市| 鄂尔多斯市| 永康市| 蛟河市| 合阳县| 镇原县| 呼图壁县| 察哈| 黄大仙区| 家居| 岑溪市| 林芝县| 唐海县| 获嘉县| 和田市| 波密县| 乃东县| 吴忠市| 三门县| 忻城县| 曲周县| 阿克陶县| 罗山县| 丹巴县| 筠连县| 江陵县| 上杭县| 绥滨县| 渭源县| 华蓥市| 郓城县| 安阳县| 乌拉特后旗| 陆良县| 香港| 沅江市| 穆棱市| 双柏县| 榕江县| 娄底市|