Bước 1: Đảm bảo spawnđược gọi đúng cách
Đầu tiên, xem lại các tài liệu cho child_ process.spawn (lệnh, args, tùy chọn) :
  Khởi chạy một quy trình mới với các đối số đã cho command, với các đối số dòng lệnh trong args. Nếu bị bỏ qua, argsmặc định là một mảng trống.
  
  Đối số thứ ba được sử dụng để chỉ định các tùy chọn bổ sung, mặc định là:
  
  { cwd: undefined, env: process.env }
  
  Sử dụng envđể xác định các biến môi trường sẽ hiển thị cho quy trình mới, mặc định là process.env.
Đảm bảo bạn không đặt bất kỳ đối số dòng lệnh nào commandvà toàn bộ spawncuộc gọi là hợp lệ . Tiến hành bước tiếp theo.
Bước 2: Xác định Trình phát sự kiện phát ra sự kiện lỗi
Tìm kiếm trên mã nguồn của bạn cho mỗi cuộc gọi đến spawn, hoặc child_process.spawn, tức là
spawn('some-command', [ '--help' ]);
và đính kèm một trình lắng nghe sự kiện cho sự kiện 'lỗi', để bạn được chú ý đến Trình phát sự kiện chính xác đang ném nó là 'Chưa xử lý'. Sau khi gỡ lỗi, trình xử lý đó có thể được gỡ bỏ.
spawn('some-command', [ '--help' ])
  .on('error', function( err ){ throw err })
;
Thực thi và bạn sẽ nhận được đường dẫn tệp và số dòng nơi trình nghe 'lỗi' của bạn đã được đăng ký. Cái gì đó như:
/file/that/registers/the/error/listener.js:29
      throw err;
            ^
Error: spawn ENOENT
    at errnoException (child_process.js:1000:11)
    at Process.ChildProcess._handle.onexit (child_process.js:791:34)
Nếu hai dòng đầu vẫn còn
events.js:72
        throw er; // Unhandled 'error' event
làm bước này một lần nữa cho đến khi họ không Bạn phải xác định người nghe phát ra lỗi trước khi tiếp tục bước tiếp theo.
Bước 3: Đảm bảo biến môi trường $PATH được đặt
Có hai tình huống có thể xảy ra:
- Bạn dựa vào spawnhành vi mặc định , vì vậy môi trường xử lý con sẽ giống nhưprocess.env.
- Bạn đang tự do truyền một envđối tượngspawnvàooptionsđối số.
Trong cả hai kịch bản, bạn phải kiểm tra PATHkhóa trên đối tượng môi trường mà quá trình con sinh ra sẽ sử dụng.
Ví dụ cho kịch bản 1
// inspect the PATH key on process.env
console.log( process.env.PATH );
spawn('some-command', ['--help']);
Ví dụ cho kịch bản 2
var env = getEnvKeyValuePairsSomeHow();
// inspect the PATH key on the env object
console.log( env.PATH );
spawn('some-command', ['--help'], { env: env });
Việc không có PATH(nghĩa là nó undefined) sẽ gây spawnra ENOENTlỗi , vì sẽ không thể xác định được bất kỳ trường hợp nào commandtrừ khi đó là đường dẫn tuyệt đối đến tệp thực thi.
Khi PATHđược đặt chính xác, tiến hành bước tiếp theo. Nó nên là một thư mục, hoặc một danh sách các thư mục. Trường hợp cuối cùng là bình thường.
Bước 4: Đảm bảo commandtồn tại trên một thư mục của những người được xác định trongPATH
Spawn có thể phát ra ENOENTlỗi nếu tên tệp command(nghĩa là 'some-command') không tồn tại trong ít nhất một trong các thư mục được xác định trên PATH.
Xác định vị trí chính xác của command. Trên hầu hết các bản phân phối linux, điều này có thể được thực hiện từ một thiết bị đầu cuối với whichlệnh. Nó sẽ cho bạn biết đường dẫn tuyệt đối đến tệp thực thi (như ở trên) hoặc cho biết nếu nó không được tìm thấy.
Ví dụ sử dụng mà và đầu ra của nó khi tìm thấy một lệnh
> which some-command
some-command is /usr/bin/some-command
Ví dụ sử dụng và đầu ra của nó khi không tìm thấy lệnh
> which some-command
bash: type: some-command: not found
các chương trình cài đặt sai là nguyên nhân phổ biến nhất cho lệnh không tìm thấy . Tham khảo từng tài liệu lệnh nếu cần và cài đặt nó.
Khi lệnh là một tệp script đơn giản, đảm bảo nó có thể truy cập được từ một thư mục trên PATH. Nếu không, hãy chuyển nó sang một hoặc tạo liên kết đến nó.
Khi bạn xác định PATHđược đặt chính xác và commandcó thể truy cập được từ nó, bạn sẽ có thể sinh ra quá trình con của mình mà không spawn ENOENTbị ném.
               
              
execthay vì truyền vào lệnh làm đối số đầu tiên và các tùy chọn dưới dạng Mảng cho đối số thứ hai. ví dụ như tôi đang làmspawn( "adb logcat -c" )thay vìspawn( "adb", [ "logcat", "-c" ] ).