String.matchAll не определено - PullRequest
0 голосов
/ 25 октября 2019

Я создаю пакет в узле для анализа и манипулирования csv, и мне нужно было использовать String.matchAll(), и я получил сообщение об ошибке str.matchAll is not a function. Я попытался перейти на str.match() и получил ту же ошибку. Я пытался каждый файл console.log и оба возвращали undefined. Я набрал node -v в PowerShell для Visual Studio, и он выплыл v10.16.3

мой код

fs = require('fs');

class Table {
    //the function I needed it for
    removeRow(header, value){
        let regLine = "";
        for(let i=0; i<this.colArr.length; i++){
            if (this.colArr[i][0]==header){
                regLine+=value+",";
            }else{
                regLine+=".*,"
            }
        }
        regLine = "\n"+regLine.substring(0,regLine.length-2)+"\n";
        let regex = new RegExp(regLine);

        let removed = this.text.matchAll(regex);//this line
        let newText = this.text.replace(regex,"\n");
        fs.writeFile(this.link, newText);
        this.update();
        return removed;
    }
}

В отмеченной строке он выдает ошибку this.text is not a function I console.loggedtypeof(this.text) и он дал строку, так что я не знаю, что происходит

1 Ответ

1 голос
/ 25 октября 2019

String.matchAll доступен только начиная с Node.js 12.0 (см. Совместимость здесь: string.matchAll ).

Однако String.match должен быть доступен в ранних версиях Node.js.

Вот пример, который я создал в действии (Узел v10.16.0): https://repl.it/repls/PunctualRareHypotenuse

Я бы также предложил убедиться, что рассматриваемый объект является строкой, которую нужно простоОбязательно!

Также, если вам легко обновить, попробуйте установить Node.js 12 .

Код:

var str = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz';
var regexp = /[A-E]/g;
var matches_array = str.match(regexp);

console.log(matches_array);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...