javascript - 当相同的代码在其他 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
解决方案
推荐阅读
- google-cloud-platform - 如果我刚刚升级了结算帐号,GCP 免费试用额度是否会继续?
- ios - 斯威夫特和 Xcode。所有 UIViewController 在添加到 TabBarController 时变黑
- sql - 是否可以隐藏所有重复数据行?
- ios - 将数据从数组加载到 UITableView 单元格的问题
- javascript - 反应 OnAnimationEnd 问题
- php - 不明白为什么需要 $_SESSION
- arduino - 使用通过 CAN 总线发送的信息在 Arduino 上闪烁 LED 时出现问题
- symfony - 如何使用 Symfony 解决 URL 中的 ID 传递问题
- for-loop - 测试数组/列表的所有元素是否满足条件的最佳方法
- postgresql - 访问列数组并将其存储在新表中