Javascript 当相同的代码在其他windows计算机上执行时,为什么gulp.watch不能在windows计算机上运行?

Javascript 当相同的代码在其他windows计算机上执行时,为什么gulp.watch不能在windows计算机上运行?,javascript,node.js,powershell,gulp,gulp-watch,Javascript,Node.js,Powershell,Gulp,Gulp Watch,我正在帮助一位远程同事在他们的Windows 10计算机上安装gulp,但遇到了一个问题,gulp中的手表功能根本无法工作 其他的“吞咽”功能运行良好,但手表特别是在屏幕上没有任何错误地挂起 为了确保代码中没有遗漏任何内容,我做了一个简单的测试gulpfile,以确保这不是由于其他原因造成的 gulpfile.js var gulp = require("gulp"); var fs = require('fs'); var compareToPreviousRead = require(".

我正在帮助一位远程同事在他们的Windows 10计算机上安装gulp,但遇到了一个问题,gulp中的手表功能根本无法工作

其他的“吞咽”功能运行良好,但手表特别是在屏幕上没有任何错误地挂起

为了确保代码中没有遗漏任何内容,我做了一个简单的测试gulpfile,以确保这不是由于其他原因造成的


gulpfile.js

var gulp = require("gulp");
var fs = require('fs');
var compareToPreviousRead = require("./fileReaderTest.js");

gulp.task("watch", function(){
    return gulp.watch("Test.txt", async function(){
        var diff = await compareToPreviousRead();
        console.log(`Diff: "${diff}", Time: "${new Date().toGMTString()}"`);
        Promise.resolve(true);
    });
});
var fs = require('fs');

var readTestFile = () => new Promise(resolve => {
    fs.readFile('Test.txt', 'utf8', (err, contents) => resolve(contents));
});

var originalValue = "";

var compareToPreviousRead = () => new Promise(resolve => {
    readTestFile().then(updatedValue => {
        var diff = updatedValue.replace(originalValue, "");
        originalValue = updatedValue;
        resolve(diff);
    });
});

module.exports = compareToPreviousRead

fileReaderTest.js

var gulp = require("gulp");
var fs = require('fs');
var compareToPreviousRead = require("./fileReaderTest.js");

gulp.task("watch", function(){
    return gulp.watch("Test.txt", async function(){
        var diff = await compareToPreviousRead();
        console.log(`Diff: "${diff}", Time: "${new Date().toGMTString()}"`);
        Promise.resolve(true);
    });
});
var fs = require('fs');

var readTestFile = () => new Promise(resolve => {
    fs.readFile('Test.txt', 'utf8', (err, contents) => resolve(contents));
});

var originalValue = "";

var compareToPreviousRead = () => new Promise(resolve => {
    readTestFile().then(updatedValue => {
        var diff = updatedValue.replace(originalValue, "");
        originalValue = updatedValue;
        resolve(diff);
    });
});

module.exports = compareToPreviousRead

我还包括一些PowerShell脚本,用于从同一目录安装和运行应用程序。 有人也可以在同一个目录中手动编辑一个名为“Test.txt”的文件(仅附加到该文件),这样gulp任务就可以正常工作


WriteToFileEverySecond.ps1

param ($testFileLocation)

Start-Sleep -Seconds 1
$i = 0
for ($i=0; $i -lt 10; $i++){
    [System.IO.File]::AppendAllText($testFileLocation, "$i--", [System.Text.Encoding]::Ascii)
    Start-Sleep -Seconds 1
}
$currDir = $PSScriptRoot

cd $currDir

npm install --silent

Remove-Item "$currDir/Test.txt" -ErrorAction SilentlyContinue > $null
New-Item "Test.txt" -ItemType File > $null

$job1 = Start-Job -ScriptBlock {
    param($currDir)
    cd $currDir
    gulp watch --silent
} -ArgumentList $currDir

Start-Sleep -Seconds 1

$job2 = Start-Job -FilePath "$currDir/WriteToFileEverySecond.ps1" -ArgumentList "$currDir/Test.txt"

while ($job1.HasMoreData -and $job2.HasMoreData) {
    $job1,$job2 | Receive-Job
}

$job1,$job2 | Stop-Job
$job1,$job2 | Remove-Job

pause

TestGulpWatch.ps1

param ($testFileLocation)

Start-Sleep -Seconds 1
$i = 0
for ($i=0; $i -lt 10; $i++){
    [System.IO.File]::AppendAllText($testFileLocation, "$i--", [System.Text.Encoding]::Ascii)
    Start-Sleep -Seconds 1
}
$currDir = $PSScriptRoot

cd $currDir

npm install --silent

Remove-Item "$currDir/Test.txt" -ErrorAction SilentlyContinue > $null
New-Item "Test.txt" -ItemType File > $null

$job1 = Start-Job -ScriptBlock {
    param($currDir)
    cd $currDir
    gulp watch --silent
} -ArgumentList $currDir

Start-Sleep -Seconds 1

$job2 = Start-Job -FilePath "$currDir/WriteToFileEverySecond.ps1" -ArgumentList "$currDir/Test.txt"

while ($job1.HasMoreData -and $job2.HasMoreData) {
    $job1,$job2 | Receive-Job
}

$job1,$job2 | Stop-Job
$job1,$job2 | Remove-Job

pause

他们正在使用以下版本: 净现值:6.13.1 gulp cli版本:2.2.0 大口回购版本:4.0.2