Làm cách nào để loại bỏ lỗi 404 trong JavaScript?

Tiếp theo. js 13 sử dụng các tệp đặc biệt để định tuyến. Ví dụ

// app/posts/[...slug]/page.tsx
import { notFound } from "next/navigation"

function getPostBySlug[slug] {
  // ...
}

export default async function PostPage[{ params }] {
  const post = await getPostBySlug[params.slug]

  if [!post] {
    notFound[]	
  }

  return 
}

4 để xây dựng giao diện người dùng và ____25 để tải các thành phần

Đối với lỗi không tìm thấy trang/404, chúng tôi sử dụng tệp

// app/posts/[...slug]/page.tsx
import { notFound } from "next/navigation"

function getPostBySlug[slug] {
  // ...
}

export default async function PostPage[{ params }] {
  const post = await getPostBySlug[params.slug]

  if [!post] {
    notFound[]	
  }

  return 
}

6 đặc biệt

Trang 404 tùy chỉnh

Hãy bắt đầu bằng cách thêm trang 404 tùy chỉnh để xử lý lỗi không tìm thấy bài đăng

Tạo một tệp tại

// app/posts/[...slug]/page.tsx
import { notFound } from "next/navigation"

function getPostBySlug[slug] {
  // ...
}

export default async function PostPage[{ params }] {
  const post = await getPostBySlug[params.slug]

  if [!post] {
    notFound[]	
  }

  return 
}

7

Đây là cấu trúc tệp sẽ trông như thế nào

//reqres.in/api/users/34"]
.then[res=>res.json[]]
.then[data=>console.log[data]]0

fetch["//reqres.in/api/users/1"]
.then[ response => response.json[] ]
.then[ data => console.log[data] ]
.catch[ error => console.log[error] ]

Nó xuất hiện sau tất cả các

fetch["//reqres.in/api/users/34"]  
.then[res=>res.json[]]
.then[data=>console.log[data]]
1 và được sử dụng để xử lý các lời hứa bị từ chối.
Hãy nhớ điều này ở điểm 2 → “Nó xử lý các lời hứa bị từ chối”

Trước tiên, hãy xem điều gì sẽ xảy ra khi chúng tôi truy cập thông tin chi tiết của người dùng không tồn tại. Theo những gì chúng tôi biết, chúng tôi sẽ nhận lại lỗi '404' nói rằng không tìm thấy, phải không?

fetch["//reqres.in/api/users/34"]  
.then[res=>res.json[]]
.then[data=>console.log[data]]

Chúng tôi không thấy lỗi hay bất kỳ dữ liệu nào nhưng lời hứa đã được thực hiện. vì vậy bạn có thể nghĩ rằng có một khối

fetch["//reqres.in/api/users/34"]  
.then[res=>res.json[]]
.then[data=>console.log[data]]
0 ở cuối sẽ hoạt động, nhưng

// app/posts/[...slug]/page.tsx
import { notFound } from "next/navigation"

function getPostBySlug[slug] {
  // ...
}

export default async function PostPage[{ params }] {
  const post = await getPostBySlug[params.slug]

  if [!post] {
    notFound[]	
  }

  return 
}

0

Thấy chưa? . Làm cách nào để lệnh bắt có thể xử lý lỗi nếu không có lỗi nào được đưa ra?
Bây giờ, hãy nghĩ về điểm đầu tiên mà tôi muốn bạn ghi nhớ. Theo đó, lỗi 404 không phải là lỗi của

// app/posts/[...slug]/page.tsx
import { notFound } from "next/navigation"

function getPostBySlug[slug] {
  // ...
}

export default async function PostPage[{ params }] {
  const post = await getPostBySlug[params.slug]

  if [!post] {
    notFound[]	
  }

  return 
}

2, vì vậy nó đã thành công trong việc trả lại một lời hứa. Trả lại một lời hứa theo nghĩa, lời hứa không bị từ chối. Theo điểm thứ hai cần ghi nhớ, khối
fetch["//reqres.in/api/users/34"]  
.then[res=>res.json[]]
.then[data=>console.log[data]]
0 xử lý việc từ chối một lời hứa và do đó nó không xử lý lỗi này vì một lời hứa được trả lại ở đây. Trong hình trên, bạn có thể thấy trạng thái lời hứa là 'đã hoàn thành'.

Để xử lý các lỗi như vậy, tìm nạp cung cấp thuộc tính “ok” cho đối tượng phản hồi mà nó trả về. Chúng ta có thể in đối tượng res để xem các chi tiết này

// app/posts/[...slug]/page.tsx
import { notFound } from "next/navigation"

function getPostBySlug[slug] {
  // ...
}

export default async function PostPage[{ params }] {
  const post = await getPostBySlug[params.slug]

  if [!post] {
    notFound[]	
  }

  return 
}

2

Trước khi trả về đối tượng phản hồi, chúng ta chỉ cần kiểm tra xem 'ok' được đặt thành true hay false. Nó đại diện cho mã trạng thái của cuộc gọi tìm nạp. Nếu mã trạng thái có dạng

fetch["//reqres.in/api/users/34"]  
.then[res=>res.json[]]
.then[data=>console.log[data]]
5, 'ok' sẽ được đặt thành true, nếu không, nó sẽ được đặt thành false [đối với mã trạng thái
fetch["//reqres.in/api/users/34"]  
.then[res=>res.json[]]
.then[data=>console.log[data]]
6 và
fetch["//reqres.in/api/users/34"]  
.then[res=>res.json[]]
.then[data=>console.log[data]]
7]

// app/posts/[...slug]/page.tsx
import { notFound } from "next/navigation"

function getPostBySlug[slug] {
  // ...
}

export default async function PostPage[{ params }] {
  const post = await getPostBySlug[params.slug]

  if [!post] {
    notFound[]	
  }

  return 
}

6

Trạng thái lời hứa là "đã hoàn thành" nhưng chúng tôi đã xử lý lỗi ngay bây giờ.
Bây giờ chúng ta có thể thấy bằng chứng rằng lời hứa bị từ chối và do đó được xử lý bởi khối

fetch["//reqres.in/api/users/34"]  
.then[res=>res.json[]]
.then[data=>console.log[data]]
0. Để xem trạng thái lời hứa bị từ chối, hãy xóa khối
fetch["//reqres.in/api/users/34"]  
.then[res=>res.json[]]
.then[data=>console.log[data]]
0. Ngoài ra, khối in dữ liệu, vì không có gì được sử dụng nếu không có gì được trả về từ khối phản hồi, phải không?

// app/posts/[...slug]/page.tsx
import { notFound } from "next/navigation"

function getPostBySlug[slug] {
  // ...
}

export default async function PostPage[{ params }] {
  const post = await getPostBySlug[params.slug]

  if [!post] {
    notFound[]	
  }

  return 
}

9

Như bạn có thể thấy, trạng thái của lời hứa bị từ chối và do đó khối bắt có thể xử lý lỗi này. Bạn có thể in phản hồi thay vì trả lại, nhưng bạn sẽ nhận được kết quả tương tự

fetch["//reqres.in/api/users/34"]  
.then[res=>res.json[]]
.then[data=>console.log[data]]
0 có thể xử lý các lỗi cú pháp vì nếu cú ​​pháp sai.
không thể tìm nạp thành công → vì vậy lời hứa không được trả lại → nên xảy ra lỗi
Ở đây, cú pháp sai, vì vậy, cú pháp bắt lỗi và in ra.

// app/posts/[...slug]/page.tsx
import { notFound } from "next/navigation"

function getPostBySlug[slug] {
  // ...
}

export default async function PostPage[{ params }] {
  const post = await getPostBySlug[params.slug]

  if [!post] {
    notFound[]	
  }

  return 
}

1

Tương tự, Lỗi mạng. không có mạng → tìm nạp không thể thành công → vì vậy lời hứa không được trả lại → vì vậy lỗi sẽ xảy ra

// app/posts/[...slug]/page.tsx
import { notFound } from "next/navigation"

function getPostBySlug[slug] {
  // ...
}

export default async function PostPage[{ params }] {
  const post = await getPostBySlug[params.slug]

  if [!post] {
    notFound[]	
  }

  return 
}

2

Nhưng URL không hợp lệ sẽ trực tiếp đưa ra lỗi “Mã thông báo không hợp lệ hoặc không mong muốn”, bởi vì quá trình tìm nạp thậm chí không thể bắt đầu quá trình nếu URL sai, chưa nói đến việc trả lại một lời hứa

// app/posts/[...slug]/page.tsx
import { notFound } from "next/navigation"

function getPostBySlug[slug] {
  // ...
}

export default async function PostPage[{ params }] {
  const post = await getPostBySlug[params.slug]

  if [!post] {
    notFound[]	
  }

  return 
}

3

Cuối cùng, bạn đã làm đến cùng. Đó là tất cả những gì bạn cần biết về việc xử lý các cuộc gọi không thành công của

// app/posts/[...slug]/page.tsx
import { notFound } from "next/navigation"

function getPostBySlug[slug] {
  // ...
}

export default async function PostPage[{ params }] {
  const post = await getPostBySlug[params.slug]

  if [!post] {
    notFound[]	
  }

  return 
}

2

Hy vọng bạn thích bài viết. Nếu bạn đã làm, hãy cân nhắc cung cấp phản hồi hoặc đề xuất trong phần bình luận. Hãy chắc chắn theo dõi để không bỏ lỡ bất kỳ bài viết nào trong tương lai của tôi. Hãy đón chờ những bài viết thú vị hơn ở phía trước

Làm cách nào để bắt lỗi 404 JavaScript?

Tất cả những gì bạn cần làm là thêm chức năng phần mềm trung gian ở cuối ngăn xếp [bên dưới tất cả các chức năng khác] để xử lý phản hồi 404 { res. trạng thái[404].

Làm cách nào để đưa ra lỗi trong JavaScript?

tạo [Lỗi. nguyên mẫu]; . ném New CustomException['Thông báo ngoại lệ'];

Làm cách nào để đưa ra lỗi 500 trong JavaScript?

Lỗi thường được lan truyền thông qua tham số đầu tiên của lệnh gọi lại được cung cấp. Nếu tôi cần trả lại lỗi cho người dùng, tôi sẽ thực hiện bằng cách sử dụng res. gửi['Lỗi', 500];

Làm cách nào để đưa ra lỗi tùy chỉnh trong JavaScript?

Bạn có thể sử dụng lớp lỗi này để xây dựng nguyên mẫu đối tượng lỗi của riêng mình, được gọi là lỗi tùy chỉnh. Lỗi tùy chỉnh có thể được xây dựng theo hai cách, đó là. Trình tạo lớp mở rộng lớp lỗi. .
tin nhắn. Thông báo lỗi
tên tập tin. Tệp xảy ra lỗi
vải lanh. số dòng lỗi

Chủ Đề