子目录未在heroku中使用express.static

时间:2013-10-11 01:19:49

标签: node.js heroku express static-files

我看到一些非常奇怪的行为,我的某些文件正由我的快递/节点服务器(使用express.static())正确返回,但不是子目录中的文件。令人沮丧的是它在本地使用节点或工头工作正常,它只能在he​​roku上工作。 This gist主要文件在这里播放,我的app结构如下所示:

-app
    - index.html
    - img/
        - base.png
        - sub/
            - sub.png
    - scripts
        - base.js
        - sub/
            - sub.js
    - css
        - base.css
        - sub/
            - sub.css
- server
    - app.js

index.html和base。*文件都加载正常,它只是404的子。*文件。看起来奇怪的是express.static将深入1级,但不是2

我尝试过一系列不同的配置,包括stackoverflow answer。我不得不错过一些简单的东西。谢谢你的帮助。

更新:

当我在heroku上的server server上启动以下控件时,我得到:

  • path.join(__dirname, '../app') = /app
  • path.join(__dirname, '/../app') = /app/app
  • path.normalize(path.join(__dirname, '../app')) = /app/app
  • path.join(process.cwd(), '../app') = /app/app

4 个答案:

答案 0 :(得分:2)

确保将目录的子目录添加到Git存储库。

您可以使用heroku run 'ls ~'帮助调试问题(通过观察dyno上的文件)。

放绝对路径并没有为我解决。您的.gitignore可能会将其排除在外。

答案 1 :(得分:1)

尝试将静态目录更改为:

app.use(express.static(path.join(__dirname, '/../app'), { maxAge: 86400000 }));

app.use(express.static(path.normalize(path.join(__dirname, '../app')), { maxAge: 86400000 }));

答案 2 :(得分:1)

添加{{__dirname}}

<link href="{{__dirname}}/stylesheets/style.css" type="text/css" rel="stylesheet" media="screen,projection"/>

在layout.hbs或layout.jde

答案 3 :(得分:0)

我刚刚遇到了同样的问题,我已经阅读了所有不同的答案,其中一些可能很重要,但最后,这是我所做的更改,之后静态内容开始获得服务

CALENDARSPATH = path.join(process.env.PWD, 'calendars');

...

-app.use(express.static(CALENDARSPATH, { maxAge: 86400000 }));
+app.use('/calendars', express.static(CALENDARSPATH, { maxAge: 86400000 }));