Heroku(Cedar)+ Node + Express + Jade子目录中的客户端javascript文件与foreman + curl本地工作,但在推送到Heroku时不能

时间:2012-04-28 21:17:30

标签: javascript node.js heroku express pug

我对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即将推出,只有当脚本标记的src属性指向我的网站时才会出现问题。我需要做些什么才能使我的脚本可用?

1 个答案:

答案 0 :(得分:6)

我建议您使用 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)