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

Node.js + Express如何路由到上级目录的assets文件夹?

问题解决方法

你的问题出在express.static的使用方式上,参数顺序和路径处理都有误:

错误原因

app.use(URL前缀, express.static(实际文件目录的绝对路径))是正确用法,你把两个参数搞反了:

  • 原代码里第一个参数写了assets文件夹的绝对路径,这会被当成URL前缀,导致你访问的/assets和这个前缀不匹配
  • 第二个参数传的相对路径assets是相对于Node.js的启动目录,不是当前文件目录,所以找不到资源

修正后的代码

把assets的静态资源配置改成下面这样:

function definirGrid(numeroDeCartas = 12){
    console.log('hei')

    const express = require('express');
    const bodyParser = require('body-parser');
    const path = require('path');
    const app = express();
    const PORT = 3001;

    // 推荐:testedir也改成绝对路径写法,避免启动目录变化导致失效
    const testedirPath = path.join(__dirname, 'testedir');
    app.use('/testedir', express.static(testedirPath));

    // 正确配置assets的静态资源路由
    const assetsPath = path.join(__dirname, '..', 'assets');
    app.use('/assets', express.static(assetsPath));

    app.get('/',(req, res)=>{
        res.send('hello world');
    });
    app.get('/sobre',(req, res)=>{
        res.send('página sobre');
    });

    app.listen(PORT, ()=>{
        console.log('app listening on port',PORT)
    })
}

definirGrid()

解释

  • __dirname代表当前Gamegrid.js文件所在的目录(即src/components/)
  • path.join(__dirname, '..', 'assets')会拼接出src/assets/的绝对路径,这是图片实际存放的位置
  • app.use('/assets', express.static(assetsPath))表示:当用户访问/assets/xxx路径时,Express会去assetsPath对应的目录里找对应的文件

这样修改后,你就能正常访问http://localhost:3001/assets/02.jpg了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 20:22:45