一些评论指的是这个问题背后的完整"故事",但我决定缩短它,因为它太长而且难以遵循.我尽可能地向你展示简洁的失败例子.对于那些有兴趣了解问题的完整背景的人:可以在问题的先前修订版中找到它.
这是:在安装CLI附带的任何软件包之后,npm 生成的basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")脚本中的第一行(不包括hashbang).由于某种原因未正确解决,这就是节点无法找到模块和崩溃的原因.我设法在最新的Git for Windows'git-bash中将问题缩小到子管道.执行:basedir
echo -n "1:"
echo "a" | cat
echo -n "2:"
echo "$(echo "a" | cat)"
echo -n "3:"
echo "$(echo "a")"
Run Code Online (Sandbox Code Playgroud)
打印:
1:a
2:
3:a
Run Code Online (Sandbox Code Playgroud)
我找不到其他人这个问题所以我认为我的环境(Windows 10 Pro,Git for Windows 2.8.4)出了问题,而且我个人认为它可能来自于它的想法.我的发现:
片段:
echo $(echo foobar | cat > bazzzzzzzzzz ; ) ; cat bazzzzzzzzzz
find /c …Run Code Online (Sandbox Code Playgroud) 我读到的关于节点EventEmitters的每篇文章都讨论了如何创建它们.但是,我还没有看到为什么要使用它们而不仅仅是一个简单的函数的具体示例.例如,这是一本书中的一个例子,我正在阅读如何通过其构造函数在自定义对象上使用EventEmitter类.
var util = require('util');
var events = require('events');
var AudioDevice = {
play: function(track) {
// Stub: Trigger playback through iTunes, mpg123, etc.
console.log("playing song: " + track);
},
stop: function() {
console.log("song stopped");
}
};
function MusicPlayer() {
this.playing = false;
events.EventEmitter.call(this);
}
util.inherits(MusicPlayer, events.EventEmitter);
var musicPlayer = new MusicPlayer();
musicPlayer.on('play', function(track) {
this.playing = true;
AudioDevice.play(track);
});
musicPlayer.on('stop', function() {
this.playing = false;
AudioDevice.stop();
});
musicPlayer.emit('play', 'The Roots - The Fire');
setTimeout(function() {
musicPlayer.emit('stop');
}, 1000);
Run Code Online (Sandbox Code Playgroud)
但是,以下给出了相同的结果: …