在Heroku上部署Nodejs无法为位于子文件夹中的静态文件提供服务

我正在部署一个使用Heroku的NodeJs应用程序。 一切工作正常,除了一个小问题提供静态文件。

我有以下configuration

app.use(express.static(__dirname + '/htdocs')); 

它工作正常,除非我尝试提供位于子文件夹中的静态文件。

www.example.com/bar.js //提供文件/htdocs/bar.js

www.example.com/foo/bar.js //这找不到文件/htdocs/foo/bar.js

我忘记说,在我的本地环境一切正常,可能是与Heroku的东西,但我找不到原因。 有人有过这个问题吗? 解决scheme?

谢谢!

最后我find了解决办法。

我解决了,只是在我的package.json中添加npm版本。

 { "name": "bla", "version": "0.0.1", "dependencies": { "express": "3.2.6" }, "engines": { "node": "0.10.11", "npm": "1.2.25" } } 

显然,在这个问题中解释: Heroku(Cedar)+ Node + Express + Jade子目录中的客户端JavaScript文件与foreman + curl本地工作,但不推送到Heroku时 ,不能使用__dirname与Heroku。

替代似乎是:

//在你的web.js的顶部
process.env.PWD = process.cwd()

// 然后
app.use(express.static(process.env.PWD +'/ htdocs'));

如果这些解决scheme都不起作用,请检查我的解

确保你的目录的子目录被添加到你的Git仓库中。

我挣扎了一会儿,不得不恢复使用/ public(from / dist)作为静态文件夹 – 现在完美的工作

就我而言,我在构build中有一个步骤,实际上是删除/public文件夹,然后重新添加到bundle.js和bundle.css中。

所以在我的本地我没有看到它,但是当它被部署到Heroku时,资产缺失。