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

Express@4.18.2下载仅含扩展名文件时出现NotFoundError求助

问题分析与解决方法

这不是Bug,是Express底层依赖的send模块的默认行为导致的——默认会拒绝访问以.开头的文件(即dotfiles),不管文件名是否只有扩展名(比如.gitignore、.prettierrc都属于这类文件),而普通命名文件(如t.txt)不受限制。

解决步骤:

  • 如果是直接使用res.download(),可以用res.sendFile()替代并显式开启dotfiles访问权限(res.download()未直接暴露该配置项):
    const path = require('path');
    
    // 替换原res.download('../.gitignore')的写法
    res.sendFile(path.resolve('../.gitignore'), { dotfiles: 'allow' }, (err) => {
      if (err) {
        // 按需处理错误,比如传递给错误中间件
        next(err);
      }
    });
    
  • 如果同时使用express.static中间件托管静态文件,需要在配置中指定dotfiles选项:
    app.use(express.static('your-static-dir', { dotfiles: 'allow' }));
    

补充说明:

Express默认忽略dotfiles是出于安全考量,防止敏感配置文件(如.env、.gitignore)被意外暴露。只有在确认需要提供这类文件下载权限时,才建议修改上述配置,否则保持默认设置更安全。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 19:35:20