Node.js 在Heroku上部署NodeJ无法提供位于子文件夹中的静态文件
我正在使用Heroku部署一个NodeJs应用程序。除了一个服务静态文件的小问题外,一切都正常 我有以下配置Node.js 在Heroku上部署NodeJ无法提供位于子文件夹中的静态文件,node.js,heroku,express,static-files,Node.js,Heroku,Express,Static Files,我正在使用Heroku部署一个NodeJs应用程序。除了一个服务静态文件的小问题外,一切都正常 我有以下配置 app.use(express.static(__dirname + '/htdocs')); 它工作得很好,但当我尝试提供位于子文件夹中的静态文件时除外 www.example.com/bar.js//这提供了文件/htdocs/bar.js www.example.com/foo/bar.js//此文件找不到该文件 /htdocs/foo/bar.js 我忘了说,在我当地的环境中,
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有关,但我找不到原因。以前有人有过这个问题吗?解决方案
谢谢 显然,正如在这个问题中所解释的:,你不能将_dirname与Heroku一起使用 另一种选择似乎是: //在web.js的顶部
process.env.PWD=process.cwd() //然后
app.use(express.static(process.env.PWD+'/htdocs')
最后我找到了解决办法 我解决了这个问题,只需在我的package.json中添加npm版本
{
"name": "bla",
"version": "0.0.1",
"dependencies": {
"express": "3.2.6"
},
"engines": {
"node": "0.10.11",
"npm": "1.2.25"
}
}
我为此挣扎了一段时间,不得不恢复使用/public(from/dist)作为静态文件夹-现在可以完美地工作了在我的例子中,我在构建中有一个步骤,实际上是清除了
/public
文件夹,然后重新添加到bundle.js和bundle.css中
因此,在我的本地服务器上,我没有看到它,但当它部署到Heroku时,资产丢失了。如果这些解决方案都不起作用,请检查 确保将目录的子目录添加到Git存储库中。
通过从.gitignore文件中删除公用文件夹,我解决了本例中的问题。我不知道它在那里干什么。嘿!我已经找到了,但没用。。。但我现在真的找到了灵魂!!!这只是我的package.json,我忘了放npm版本,我不知道为什么,但这解决了整个问题。谢谢我猜是因为Heroku需要它来下载正确版本的NPM。默认情况下,它应该下载一个非常旧的。我们不知道接下来会发生什么:)我已经在package.json中添加了一个npm版本,并完成了这个解决方案。还是不行,这对我很有效。我忽略了.gitignore中的/dist目录。我删除了它,静态文件链接按预期工作