Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/472.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/38.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/email/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaScript if语句不';t似乎在比较字符串中的某些值_Javascript_Node.js - Fatal编程技术网

JavaScript if语句不';t似乎在比较字符串中的某些值

JavaScript if语句不';t似乎在比较字符串中的某些值,javascript,node.js,Javascript,Node.js,为了好玩,我正在创建一个简单的discord机器人,并决定让它读取一个文本文件,只显示以我设置的字符串开头的行。我使用的是节点模块n-readlines,我编写的以下代码最初是有效的 function readLatestCrashReport() { const lineByLine = require('n-readlines'); const liner = new lineByLine('tests/crash-report.txt'); let line, li

为了好玩,我正在创建一个简单的discord机器人,并决定让它读取一个文本文件,只显示以我设置的字符串开头的行。我使用的是节点模块n-readlines,我编写的以下代码最初是有效的

function readLatestCrashReport() {
    const lineByLine = require('n-readlines');
    const liner = new lineByLine('tests/crash-report.txt');
    let line, linesToPrint = 0, stackTraceFound = false, errors = [];

    while (line = liner.next()) {
        line = line.toString('ascii').toLowerCase();

        if (line.substring(0, 12) === 'description:') {
            errors.push(line);

        } else if (line === 'stacktrace:') {
            errors.push(line);
            linesToPrint = 3;
            stackTraceFound = true;

        } else if (linesToPrint > 0 && line !== '') {
            linesToPrint--;
            errors.push(line);

        } else if (stackTraceFound === true && linesToPrint < 1) {
            liner.close();

        }
    }

    if (errors.length !== 0) {
        return errors.join('\n');

    } else {
        return 'No Description Or Stacktrace Could Be Found';

    }
}
最初的结果是:

Description: Initializing
Stacktrace:
    Printed first line
    Printed second line
    Printed third line
这很完美,但我第二天回来,这次的结果是:

Description: Initializing
我觉得这很奇怪,所以我记录了console.log
line
以查看发生了什么,控制台如预期的那样:

Description: Initializing

Stacktrace:
    Printed first line
    Printed second line
    Printed third line
    Not printed fourth line
    Not printed fifth line

    Not printed seventh line
出于某种原因,if语句似乎适用于第一行,然后继续不适用于任何其他if语句。
我试着将
===
更改为
==
,但没有任何改变。我添加了更多的
Description:initialized
行,它只打印它们,但完全忽略
Stacktrace:
,最后我尝试切换if语句,它仍然只打印
Description:initialized
。是我做错了什么,还是JavaScript搞乱了?

使用.trim()修复了这个问题,它在MAC而不是Windows上工作的原因可能在于它们如何处理新行。Mac仅使用
'\n'
而Windows使用
'\r\n'

您确定输入文件中的“Stacktrace:”后面没有空格吗?也许在toLowerCase()之后添加一个.trim()会有帮助吗?谢谢,这看起来很有效,但奇怪的是它现在才开始这么做。这原本在MAC上有效,但在Windows上似乎会中断,除非您添加修剪。
Description: Initializing

Stacktrace:
    Printed first line
    Printed second line
    Printed third line
    Not printed fourth line
    Not printed fifth line

    Not printed seventh line