0
0
Lập trình
Harry Tran
Harry Tran106580903228332612117

Giải quyết lỗi ‘crypto.hash is not a function’ khi triển khai Vite + Firebase

Đăng vào 5 tháng trước

• 4 phút đọc

Giới thiệu

Khi triển khai một dự án Vite + React lên Firebase Hosting bằng GitHub Actions, tôi đã gặp phải một lỗi trong quá trình xây dựng. Sau khi điều tra, tôi phát hiện ra nguyên nhân chính là do phiên bản Node.js đã lỗi thời. Bài viết này được viết ra để giúp những ai gặp phải lỗi tương tự có thể dễ dàng khắc phục.

Lỗi Gặp Phải

Lỗi mà tôi gặp phải là:

Copy
Bạn đang sử dụng Node.js 18.20.8. Vite yêu cầu phiên bản Node.js từ 20.19+ hoặc 22.12+. Vui lòng nâng cấp phiên bản Node.js của bạn.

[vite:asset] Không thể tải /vite.svg (được nhập bởi src/App.tsx): crypto.hash không phải là một hàm
  • GitHub Actions đang sử dụng Node.js 18
  • Vite v7 yêu cầu Node.js từ 20.19+ hoặc 22.12+
  • Điều này đã khiến quá trình xây dựng thất bại

Giải Pháp

Để khắc phục lỗi này, bạn có thể thực hiện các bước sau:

1. Nâng cấp Phiên bản Node.js

Bạn cần chỉ định phiên bản Node.js 22 trong tệp cấu hình CI/CD của mình. Dưới đây là cách thực hiện:

Copy
- name: Thiết lập Node.js
  uses: actions/setup-node@v3
  with:
    node-version: 22

2. Chạy npm install một cách sạch sẽ

Đảm bảo rằng bạn cài đặt các phụ thuộc bằng cách sử dụng lệnh sau:

Copy
- name: Cài đặt các phụ thuộc
  run: npm ci

Cấu Hình GitHub Actions Mới

Dưới đây là cấu hình mẫu cho GitHub Actions:

Copy
jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - name: Lấy mã nguồn
        uses: actions/checkout@v3

      - name: Thiết lập Node.js
        uses: actions/setup-node@v3
        with:
          node-version: 22

      - name: Cài đặt các phụ thuộc
        run: npm ci

      - name: Chạy xây dựng
        run: npm run build

Tổng Kết

Vite v7 không tương thích với Node.js 18. Điều này có thể gây ra sự cố trong quá trình triển khai dự án lên Firebase Hosting. Đảm bảo rằng bạn nâng cấp phiên bản Node.js lên 20 hoặc cao hơn để giải quyết vấn đề này. Nếu bạn gặp phải lỗi tương tự, hãy kiểm tra phiên bản Node.js mà GitHub Actions đang sử dụng và thực hiện các bước nâng cấp cần thiết.

Thực Hành Tốt Nhất

  • Luôn kiểm tra phiên bản Node.js: Trước khi bắt đầu triển khai, hãy đảm bảo rằng bạn đang sử dụng phiên bản Node.js tương thích với các thư viện và công cụ bạn đang sử dụng.
  • Sử dụng npm ci thay vì npm install: Lệnh npm ci giúp cài đặt các phụ thuộc một cách sạch sẽ, đảm bảo rằng bạn không gặp phải vấn đề do các phiên bản khác nhau của các gói.

Các Cạm Bẫy Thường Gặp

  • Bỏ qua nâng cấp Node.js: Nhiều lập trình viên thường bỏ qua việc nâng cấp Node.js, dẫn đến các lỗi không mong muốn trong quá trình xây dựng.
  • Sử dụng lệnh không đúng: Đảm bảo bạn đang sử dụng lệnh chính xác trong GitHub Actions để tránh các lỗi không cần thiết.

Mẹo Hiệu Suất

  • Tối ưu hóa cấu hình CI/CD: Đảm bảo rằng bạn chỉ thực hiện các bước cần thiết trong quy trình CI/CD để tiết kiệm thời gian và tài nguyên.
  • Sử dụng caching: Caching các gói npm có thể giúp cải thiện thời gian xây dựng trong GitHub Actions.

Giải Quyết Vấn Đề

Nếu bạn vẫn gặp phải lỗi sau khi nâng cấp Node.js, hãy kiểm tra lại các phụ thuộc trong dự án của bạn. Đôi khi có thể có sự không tương thích giữa các gói mà bạn sử dụng.

Câu Hỏi Thường Gặp (FAQ)

1. Tại sao tôi cần nâng cấp Node.js?
Vite yêu cầu một phiên bản Node.js mới hơn để hoạt động đúng cách, nếu không bạn sẽ gặp phải lỗi trong quá trình xây dựng.

2. Tôi có thể sử dụng phiên bản Node.js nào?
Bạn nên sử dụng Node.js phiên bản 20.19+ hoặc 22.12+ để đảm bảo tính tương thích với Vite v7.

Kết Luận

Triển khai dự án lên Firebase Hosting có thể gặp phải một số thách thức, nhưng với những thông tin và chỉ dẫn rõ ràng, bạn có thể dễ dàng vượt qua các lỗi như ‘crypto.hash is not a function’. Hãy đảm bảo rằng bạn luôn kiểm tra và duy trì phiên bản Node.js của mình ở mức độ tương thích để có một quy trình làm việc hiệu quả.

Gợi ý câu hỏi phỏng vấn
Không có dữ liệu

Không có dữ liệu

Bài viết được đề xuất
Bài viết cùng tác giả

Bình luận

Chưa có bình luận nào

Chưa có bình luận nào