Node.jsを書籍Node.js the Right Wayで学習しています。次の例を実行して、というファイルの変更を、.js
ファイルと同じディレクトリに置くのを見ようとしています。監視されたファイルが変更されたときにENSOENTが発生する
"use strict";
const
fs = require('fs'),
spawn = require('child_process').spawn,
filename = process.argv[2];
if (!filename) {
throw Error("A file to watch must be specified!");
}
fs.watch(filename, function() {
let ls = spawn('ls', ['-lh', filename]);
ls.stdout.pipe(process.stdout);
});
console.log("Now watching " + filename + " for changes...");
私は、テキストファイルを変更し、それを保存するとき、私は次のエラーを取得する:
events.js:160 throw er; // Unhandled 'error' event ^
Error: spawn ls ENOENT at exports._errnoException (util.js:1018:11) at Process.ChildProcess._handle.onexit (internal/child_process.js:193:32) at onErrorNT (internal/child_process.js:367:16) at _combinedTickCallback (internal/process/next_tick.js:80:11) at process._tickCallback (internal/process/next_tick.js:104:9)
Node.jsのバージョン:v6.11.0
IDE:Visual Studioのコード1.13.1
OS:Windows 10 64x
申し訳ありませんが、私は 'require'行を変更しました。 "watch"の部分を 'cmd'に置き換えることができますか?私はTypeErrorを "spawnは関数ではない"と言っています。ありがとう。 – Disasterkid
@Disasterkid私はあなたの質問を理解しているか分からないが、回答を編集してみてください。 – Danziger
これは 'let dir = spawn( 'dir'、[filename]、{shell:true})につながります。 ^ TypeError:spawnはFSWatcherの関数 ではありません。 FSWatcher.emit(events.js:191:) のemitTwo(events.js:106:13)(C:¥Users¥Pedram¥Documents¥Node¥hello¥watcher-spawn.js:10:15 ) 7) FSEvent.FSWatcher._handle.onchange(fs。js:1426:12) ' –
Disasterkid