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

kir*_*rps 9 javascript heroku node.js express pug

我是node和heroku的新手,我怀疑这是一种简单的权限问题,但我似乎无法追踪它.

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

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

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

 curl localhost:5000/heatcanvas/heatcanvas.js
Run Code Online (Sandbox Code Playgroud)

但是当我推送到Heroku并在浏览器中点击相应的实时网址时

www.example.com/heatcanvas/heatcanvas.js
Run Code Online (Sandbox Code Playgroud)

我收到以下内容:

 Cannot GET /heatcanvas/heatcanvas.js
Run Code Online (Sandbox Code Playgroud)

如果我检查萤火虫和/或Heroku的日志,我看到我实际得到404错误,即使该路径功能应符合什么被本地完成这些文件.还值得一提的是,第三方JavaScript是在就好了未来,只有当脚本标记点到我的网站src属性,有一个问题.我需要做什么才能使我的脚本可用?

Ins*_*dJW 6

我建议您使用process.cwd()值来获取特定目录

process.env.PWD = process.cwd()
Run Code Online (Sandbox Code Playgroud)

在你的web.js的最开始

让您轻松访问文件.

你可以做

app.use('/heatcanvas',express.static(process.env.PWD+'/heatcanvas'));
Run Code Online (Sandbox Code Playgroud)

而不是使用

__dirname
Run Code Online (Sandbox Code Playgroud)

警告:确保在web.js的根目录下执行web.js(Heroku web.js以这种方式执行)