在Heroku上部署Nodej无法提供位于子文件夹中的静态文件

ius*_*ius 17 heroku static-files node.js express

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

我有以下配置

app.use(express.static(__dirname + '/htdocs'));
Run Code Online (Sandbox Code Playgroud)

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

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

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

我忘了说在我的本地环境中一切正常,可能是heroku的东西,但我找不到原因.以前有人遇到过这个问题吗?解决方案?

谢谢!

ius*_*ius 12

最后我找到了解决方案.

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

{
    "name": "bla",
    "version": "0.0.1",
    "dependencies": {
        "express": "3.2.6"
    },
    "engines": {
        "node": "0.10.11",
        "npm": "1.2.25"
    } 
}
Run Code Online (Sandbox Code Playgroud)


Aur*_*iot 10

显然,正如这个问题中的解释: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'));


het*_*lek 8

如果这些解决方案都无效,请检查我的解决方案.

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

  • 这对我有用.我忽略了.gitignore中的/ dist目录.我删除了它,静态文件链接按预期工作. (2认同)