在快速应用程序中使用 fs 使用中间件时设置 headers 时出现问题

Issue in setting headers while using middleware using fs in express application

我是 NodeJS 的新手,我正在尝试构建一个简单的视频流 API。我正在尝试使用中间件对 API 进行身份验证,该中间件使用系统中的文件来检查其中是否存在电子邮件。这是它的代码:

checkUserAllowed = (req, res, next) => {
    const email = req.body.email;
    if (!email) {
        res.status(401).send("User details not found");
        return;
    }

    fs.readFile(dataFile, 'utf8', (err, data) => {
        if (err) return false;

        const emails = data.split("\n");
        let allowed = false;
        emails.forEach((row)=>{
            if (row==email) allowed=true;
            next();
        })
                        
        if (!allowed) res.status(401).send("User not subscribed");
        return;
    })
}

发送视频的块如下:

fs.stat(path, (err, data) => {
        if (err) {
            console.log(err);
            res.status(404).send();
            return;
        }

        const size = data.size;
        const head = {
                'Content-Length': size,
                'Content-Type': 'video/mp4',
        }

        res.writeHead(200, head);
        fs.createReadStream(path).pipe(res);
    }
})

但是,在 运行 执行此操作时出现以下错误:

_http_outgoing.js:558
    throw new ERR_HTTP_HEADERS_SENT('set');
    ^

Error [ERR_HTTP_HEADERS_SENT]: Cannot set headers after they are sent to the client
    at ServerResponse.setHeader (_http_outgoing.js:558:11)
    at ServerResponse.writeHead (_http_server.js:289:21)
    at /<path>/stream.js:51:17
    at FSReqCallback.oncomplete (fs.js:184:5) {
  code: 'ERR_HTTP_HEADERS_SENT'
}

有线索吗?

犯了在循环中调用 next() 的愚蠢错误。