express静态文件访问一直是404
发布于 10 年前 作者 hoozi 10002 次浏览 最后一次编辑是 8 年前 来自 问答

express.static 中的静态路径只能是public下的吗? 我用Bower下了bootstrap 但是引用bower_components 中的bootstrap 一直是404 app.use(express.static(path.join(__dirname, 'bower_components'))); app.use(express.static(path.join(__dirname, 'public'))); 把bower_components 放到public就正常,否则一直404,多个静态路径怎么设置?

4 回复

那就把它放到 public 目录下啊!这个也是合理的做法吧。 根目录下建一个 .bowerrc 然后: { “directory”: “public/assets” } 这样每次 bower install 就会安装到 public/assets ,当然,使用原来的bower_components也可以。

@klesh 我最后的做法是: app.use("/bower_components",express.static(path.join(__dirname, 'bower_components')));

是不是很low

@hoozi low 不 low 看你的需求,不作评论。我的看法是这样, public 是用来存放可以公开的静态资源的。当我们在布署站点的时候,一般会有一个前端反向代理如nginx,这个东西其实就是个 web server , 那么它需要指定一个根目录,根目录只有一个,我们进行布置的时候直接把 nginx 指到这个目录下,把 static 中间件去掉就万事大吉了。是不是比较简单。而把它放在根目录,有几个不好的地方,从组织结构上来讲,把静态资源放在两个地方实在没有必要。布署的时候也要多配置一个虚拟路径,麻烦。bower 管理的都是客户端包,都是静态资源,需要开放给客户访问的,暗合 public 的含义。

@hoozi 没吧,社区用的差不多就是这种

app.use("/public",express.static(path.join(__dirname, '/xxxxx')));
回到顶部