我看到一些非常奇怪的行为,我的某些文件正由我的快递/节点服务器(使用express.static()
)正确返回,但不是子目录中的文件。令人沮丧的是它在本地使用节点或工头工作正常,它只能在heroku上工作。 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
答案 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 }));