You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Node.js v18.15.0中调用matchAll报错‘不是函数’的原因?

解决Node.js中matchAll调用报错:TypeError: line.matchAll is not a function

问题根源

你触发报错的核心原因是代码里的语法错误:

line = leftOver.substring(idxStart, idx).toLowerCase;

这里的toLowerCase是字符串方法的引用,没有加括号调用,导致line变量存储的是一个函数,而非你预期的小写字符串。函数类型不存在matchAll方法,因此抛出类型错误。

修正方案

给toLowerCase添加括号,确保调用方法后返回字符串:

line = leftOver.substring(idxStart, idx).toLowerCase();

完整修正后的代码

const regex = /[a-zA-Z']{2,}/g;
var leftOver = '';
var read, line, idxStart, idx;
while((read = fs.readSync(fd, buf, 0, bufSize, null)) !== 0) { 
    leftOver += buf.toString('utf-8', 0, read);
    idxStart = 0;
    while((idx = leftOver.indexOf("\n", idxStart)) !== -1) {
        // 修正:添加括号调用toLowerCase方法,返回小写字符串
        line = leftOver.substring(idxStart, idx).toLowerCase();
        let wordsInLine = line.matchAll(regex);
        for(const word of wordsInLine) {
            // 处理匹配到的单词逻辑
        }
        idxStart = idx + 1;
    }
    leftOver = leftOver.substring(idxStart); 
}

注:你的Node.js v18.15.0版本完全支持matchAll,版本并非问题所在,仅需修正方法调用的语法即可。

内容的提问来源于stack exchange,提问作者Atreides

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.05 03:11:01