我在 node.js 中的子进程有一个奇怪的问题我有一些代码在这样的子进程中运行,但是子进程在同步代码行之间以代码 0 退出。
var fs = require('fs');
var http = require('http');
var mkdirp = require('mkdirp');
var urlPath = __dirname + "\\urls.txt";
var savePath = __dirname + "\\";
var objects = [];
var globalI = 0;
var file;
if (!fs.existsSync(urlPath))
{
console.log("File at " + urlPath + " does not exist!");
}
else
{
if(!fs.existsSync(savePath)){
mkdirp.sync(savePath);
}
console.log("File found! Reading...");
console.log("still running");
try{
var data = fs.readFileSync(urlPath, {"encoding":"utf8"});
} catch (err) {
console.log("Error reading url file...");
throw err;
} finally {
console.log("File read!");
var array = data.split("\n");
console.log("Found " + array.length + " urls");
}
线
console.log("File found! Reading...");
运行并出现在控制台中。然而下一行
console.log("still running");
不运行。子进程在该行代码之前退出。我完全不知道为什么。任何见解将不胜感激!
另外,如果我改变这两个语句的顺序,它仍然只在退出前执行第一个。
编辑
所以也许它确实与冲洗和其他错误有关。如果我删除了这两个连续的日志语句,它将运行finally
块中的下一个日志语句,然后退出。
编辑2
对这个问题还有其他一些好奇的地方。您可以在代码片段中看到我在代码中有一个名为“ globalI
Later on”的变量,该变量会像globalI++;
如果我取消注释增量,子进程会意外退出, 但它没有任何意义,因为它甚至从未接近当它意外退出时发生增量的行。
这实际上就是我开始遇到这个问题的原因。我完全惊呆了