我对 node 和 heroku 很陌生,我怀疑这是某种简单的权限问题等,但我似乎无法找到它。
我的 web.js 文件所在的根目录下一层的子目录中有几个纯 JavaScript 文件。我的 web.js 文件中有一行用于指定目录
app.use('/heatcanvas',express.static(__dirname+'/heatcanvas'));
如果我使用 Heroku Foreman 在本地运行我的应用程序,我会在运行以下 curl 命令时得到预期的 js 响应
curl localhost:5000/heatcanvas/heatcanvas.js
但是,当我推送到 Heroku 并在浏览器中点击相应的实时网址时
www.example.com/heatcanvas/heatcanvas.js
我收到以下信息:
Cannot GET /heatcanvas/heatcanvas.js
如果我检查 Firebug 和/或 Heroku 日志,我发现这些文件实际上出现 404 错误,即使路径应该与本地正在执行的操作相匹配。还值得一提的是,第三方 javascript 也很好,只有当 script 标签的 src 属性指向我的站点时,才会出现问题。我需要做什么才能让我的脚本可用?
最佳答案
我建议你使用 process.cwd() 值来获取特定目录
process.env.PWD = process.cwd()
在您的 web.js
开头让您轻松访问文件。
你可以的
app.use('/heatcanvas',express.static(process.env.PWD+'/heatcanvas'));
而不是使用
__dirname
警告:确保在web.js的根目录下执行web.js(Heroku web.js就是这样执行的)
关于javascript - Heroku(Cedar) + Node + Express + Jade 子目录中的客户端 javascript 文件在本地与 foreman+curl 一起工作,但在推送到 Heroku 时不能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10367600/