首页 > 解决方案 > 当相同的代码在其他 Windows 计算机上执行时,为什么 gulp.watch 不能在 Windows 计算机上运行?

问题描述

我正在帮助一位远程同事在他们的 Windows 10 计算机上设置 gulp,但遇到了一个问题,即 gulp 中的手表功能根本不起作用。

其他 gulp 功能运行良好,但特别是 watch 只是挂起,屏幕没有任何错误。

为了确保我的代码中没有遗漏任何内容,我制作了一个简单的测试 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);
    });
});

文件阅读器测试.js

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
}

测试GulpWatch.ps1

$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

他们使用以下版本:npm:6.13.1 gulp cli 版本:2.2.0 gulp repo 版本:4.0.2

标签: javascriptnode.jspowershellgulpgulp-watch

解决方案


推荐阅读