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à:
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:
- 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:
- 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:
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 cigiú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ả.