Express js静态相对父目录

目前,我正在通过expressJs服务静态文件遇到一些小问题。

我的目录结构如下:

  • 上市
    • CSS
    • LIB
  • SRC
    • 意见
      • 的index.html
    • server.js

在我的index.html文件中,我用前导斜杠将我的所有资产前缀。

我的静态设置如下: app.use(express.static(path.resolve(__dirname + '../' + 'public')));

但由于某种原因,我的静态文件没有得到服务。

我在想,这是一个跨域调用或者什么…我目前正在使用cloud9 IDE,可能这与它有什么关系吗?

__dirname没有结尾斜杠,所以__dirname + '../'导致DIRNAME../ (这是无效的)。

相反,使用:

 __dirname + '/../public' ^ extra slash 

您应该使用path.join而不是手动连接path组件。 它使用path.normalize ,解决... ,处理多个或结尾的斜杠,并为您的平台使用适当的文件分隔符(请参阅: path.sep )。

例如,

 var path = require('path'); var express = require('express'); var app = express(); app.use(express.static(path.join(__dirname, '../public')));