Làm cách nào để nối các giá trị vào biến môi trường PATH trong NodeJS?


8

Theo câu trả lời được đề xuất trong câu hỏi -

Có thể thiết lập vĩnh viễn các biến môi trường?

Tôi đã có thể thiết lập các biến môi trường mới vĩnh viễn bằng lệnh -

spawnSync('setx', ['-m', 'MyDownloads', 'H:\\temp\\downloads'])

Nhưng bây giờ mục tiêu của tôi là nối các giá trị mới vào biến môi trường PATH.

Có thể không?


Đây có vẻ như là một câu hỏi về Windows và lệnh Setx, không phải Node, JavaScript hoặc Electron.
avejidah

Bạn đúng rồi! Tôi sẽ sửa nó
Paz

Bạn đang cố gắng sử dụng câu trả lời của tôi?
hong4rc

Tôi không hiểu câu trả lời của bạn. sự cho phép của quản trị viên không phải là vấn đề trong trường hợp của tôi.
Paz

Câu trả lời:


1

Tại sao bạn không lấy biến môi trường và sau đó nối nó?

I E

const {spawnSync} = require("child_process");
const current_value = process.env.PATH;
const new_path_value = current_value.concat(";", "/some/new/path");

var result = spawnSync('setx', ['-m', 'PATH', new_path_value])

// STDOUT
var stdOut = result.stdout.toString();
console.log(stdOut)

// STDERR
var stdErr =  result.stderr.toString();

if(stdErr === '') {
    console.log('Successfully set environment variable')
} else {
    console.log(`ERROR: ${stderr}`)
}

Cập nhật "/ some / new / path" và chạy nó với tư cách quản trị viên như liên kết bạn cung cấp gợi ý và nó sẽ hoạt động.


Nó không làm việc cho tôi
Paz

Bạn có thể tìm nguồn biến môi trường hiện tại từ process.env không? Điều gì xảy ra khi bạn console.log (current_value) và console.log (new_value)?
marksy_91

Đó là xấu của tôi, giải pháp của bạn là chính xác! cảm ơn bạn rất nhiều
Paz

2

Chạy tập lệnh của bạn với sự cho phép của quản trị viên:

  • Mở cmd hoặc PowerShell với quản trị viên
  • Chạy node your_script.js
  • Để chắp thêm PATHbiến, bạn có thể đặt giá trị là: %PATH%;your_new_value here( %PATH%lấy giá trị cũ)

Nếu bạn chạy với ứng dụng điện tử, bạn nên yêu cầu sự cho phép của quản trị viên.

Đừng quên setxchạy trên cửa sổ

nhập mô tả hình ảnh ở đây


Sự khác biệt giữa việc nối thêm một giá trị cũ và đặt một giá trị mới là gì?
Paz

@Paz Bạn có thể thêm %PATH%để nhận giá trị cũ và nối thêm giá trị mới của bạn
hong4rc

Ừ bây giờ tôi hiểu rồi. Đó là điều đầu tiên tôi làm với Electron. Tôi biết rằng lệnh trong windows được đặtx -m '% path%; NEW_VALUE' nhưng không hoạt động với Electron
Paz

@Paz bạn có chạy nó với sự cho phép của quản trị viên không?
hong4rc

tất nhiên. quyền quản trị chỉ được yêu cầu cho "-m", nghĩa là biến sẽ là biến hệ thống chứ không phải biến người dùng. đó là phần dễ dàng Tôi luôn luôn kết thúc việc thiết lập một giá trị mới ghi đè lên giá trị cũ thay vì nối thêm một giá trị mới.
Paz
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.