表达js静态相对父目录

时间:2013-12-02 06:56:15

标签: javascript node.js express

我目前遇到通过expressJs提供静态文件的一些小问题。

我的目录结构如下:

  • 公共
    • CSS
    • LIB
  • SRC
    • 视图
    • 主页
      • 的index.html
    • server.js

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

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

但由于某些原因,我的静态文件无法提供服务。

我在想这是一个跨域调用或者什么...... 我目前正在使用cloud9 IDE,这可能与某种程度上有关吗?

2 个答案:

答案 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')));