Heroku(Cedar)+ Node + Express + Jade子目录中的客户端JavaScript文件在工作时使用foreman + curl,但是当推送到Heroku时

我对节点和heroku很新,我怀疑这是一种简单的许可问题等,但我似乎无法跟踪它。

我在我的web.js文件所在的根目录下的一个子目录中有几个纯JavaScript文件。 我在我的web.js文件中有一行来指定目录

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

如果我使用Heroku Foreman在本地运行我的应用程序,那么在运行以下curl命令时,会得到预期的js响应

  curl localhost:5000/heatcanvas/heatcanvas.js 

但是,当我推到Heroku,并在浏览器中击中相应的实时url

 www.example.com/heatcanvas/heatcanvas.js 

我收到以下内容:

  Cannot GET /heatcanvas/heatcanvas.js 

如果我检查Firebug和/或Heroku日志,我发现我实际上得到这些文件的404错误,即使path应该匹配在本地完成。 另外值得一提的是,第三方javascript正好过来,只有脚本标记的src属性指向我的网站时才有问题。 我需要做什么才能使我的脚本可用?

我build议您使用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以这种方式执行)