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

Node.js+EJS动态展示PDF报错:Cannot GET文件路径求助

解决Express+EJS动态展示PDF的Cannot GET错误

核心问题:静态资源路径前缀错误

你在app.js里已经将Documente文件夹注册为静态资源目录:

app.use(express.static(path.join(__dirname, 'Documente')));

这意味着Express会把Documente文件夹下的文件直接暴露在网站根路径(/)下,而非嵌套在/Documente/路径下。你在JS里设置的iframe.src多了一层不必要的前缀,导致服务器找不到对应文件。

修复方案

方案1:修改前端路径(推荐)

直接移除EJS代码中路径里的Documente前缀:

<script>
    const btnUnu = document.getElementById("eicunu");
    const btnDoi = document.getElementById("eicdoi");
    var iframeEl = document.getElementById("iframe");

    btnUnu.addEventListener("click", toggle)
    btnDoi.addEventListener("click", toggleDoi)

    function toggle(){
        iframeEl.src = "/S231202-2.pdf"
    }
    function toggleDoi(){
        iframeEl.src = "/S291040.pdf";
    }
</script>

方案2:给静态资源添加路径前缀(保留原前端代码)

如果你希望URL里保留/Documente/前缀,修改app.js中的静态资源注册代码,添加路径映射:

// 给静态资源绑定/Documente路径前缀
app.use('/Documente', express.static(path.join(__dirname, 'Documente')));

修改后原EJS代码无需改动,服务器会自动将/Documente/xxx.pdf映射到Documente文件夹下的对应文件。

额外验证步骤

  • 确认Documente文件夹和app.js处于同级目录
  • 检查PDF文件名:大小写、后缀(必须是.pdf)、无多余空格或特殊字符,确保和代码中的完全一致
  • 重启Express服务器后,可通过浏览器直接访问http://localhost:3030/S231202-2.pdf(或带前缀的路径),验证文件是否能正常加载

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 05:42:16