Menu
CoddyTech

Biến môi trường

Thuộc phần Kiến thức cơ bản về Node.js trong hành trình Node.js của Coddy. Bài học 6 trên 33.

Một số cài đặt thuộc về người chạy chương trình, chứ không phải những từ họ nhập sau chương trình.

Biến môi trường là các chuỗi có tên mà shell chuyển cho mọi chương trình. Node đặt chúng trong process.env. Biến chưa được đặt có giá trị undefined. a ?? b cho kết quả là a, trừ khi a là undefined hoặc null; khi đó, nó cho kết quả là b. Vì vậy, process.env.CITY ?? 'Lisbon' cho kết quả là 'Lisbon' khi chưa đặt CITY.

// CITY=Oslo node weather.js
const city = process.env.CITY ?? 'Lisbon';
console.log(`Weather for ${city}`);

Trên máy tính xách tay, bạn có thể đặt biến cho một lần chạy bằng cách viết biến đó trước lệnh: CITY=Oslo node weather.js in ra Weather for Oslo, còn node weather.js thông thường in ra Lisbon. Tên có phân biệt chữ hoa chữ thường. Terminal bên cạnh code của bạn không đặt biến nào, nên luôn hiển thị giá trị mặc định.

challenge icon

Thử thách

Dễ

Ghi chú của bạn cần nêu tên người sở hữu chúng. Tên này lấy từ một biến môi trường, một thiết lập có tên mà shell truyền cho chương trình, chứ không lấy từ những từ được nhập sau lệnh.

  1. Trong notes.js, ở nhánh list, hãy đọc biến môi trường NOTES_OWNER.
  2. Trước No notes yet, hãy in một dòng tiêu đề: Notes for , theo sau là tên của người sở hữu. Khi chưa đặt NOTES_OWNER, hãy dùng từ you thay cho tên.

Khi đặt NOTES_OWNER thành Ada, list sẽ in ra:

Notes for Ada
No notes yet

Khi không đặt NOTES_OWNER, chương trình sẽ in ra:

Notes for you
No notes yet

Các lệnh khác không thay đổi.

Thử nhé: nhập list vào ô sau $ node notes.js rồi nhấn Enter. Bạn sẽ thấy Notes for you, sau đó là No notes yet. Terminal ở đây không thể đặt biến môi trường, nên bạn luôn thấy you. Khi bạn nhấn "Kiểm tra", các bài kiểm tra cũng chạy list với NOTES_OWNER lần lượt được đặt thành Ada và Grace, đồng thời mong đợi Notes for Ada và Notes for Grace. Trên máy tính xách tay, bạn có thể thử bằng lệnh NOTES_OWNER=Ada node notes.js list.

Tự làm thử

// Công cụ ghi chú của bạn bắt đầu từ đây.
const [command, ...words] = process.argv.slice(2);
const text = words.join(' ');

if (command === 'add') {
    console.log(`Adding: ${text}`);
} else if (command === 'list') {
    console.log('No notes yet');
} else {
    if (command) {
        console.error(`Unknown command: ${command}`);
    }
    console.error('Usage: node notes.js <command> [words]');
    process.exit(1);
}

Tất cả bài học trong Kiến thức cơ bản về Node.js

Tự luyện tập: Playground Express