我目前遇到通过expressJs提供静态文件的一些小问题。
我的目录结构如下:
在我的index.html
文件中,我使用前导斜杠为我的所有资产加前缀。
我的静态设置如下:
app.use(express.static(path.resolve(__dirname + '../' + 'public')));
但由于某些原因,我的静态文件无法提供服务。
我在想这是一个跨域调用或者什么...... 我目前正在使用cloud9 IDE,这可能与某种程度上有关吗?
答案 0 :(得分:51)
__dirname
没有尾部斜杠,因此__dirname + '../'
会产生DIRNAME../
(无效)。
相反,请使用:
__dirname + '/../public'
^ extra slash
答案 1 :(得分:46)
您应该使用path.join而不是手动连接路径组件。它使用path.normalize来解析.
和..
,处理多个或尾部斜杠,并为您的平台使用适当的文件分隔符(请参阅:path.sep)。
例如,
var path = require('path');
var express = require('express');
var app = express();
app.use(express.static(path.join(__dirname, '../public')));