Heroku(Cedar) + Node + Express + Jade Клиентские javascript-файлы в подкаталоге работают локально с foreman+curl, но не при нажатии на Heroku
Я очень плохо знаком с нодой и герокой и подозреваю, что это какая-то простая проблема с разрешениями и т. Д., Но я не могу отследить ее.
У меня есть несколько чистых файлов javascript в подкаталоге на один уровень ниже моего корневого каталога, где находится мой файл web.js. У меня есть строка в моем файле web.js, чтобы указать каталог
app.use('/heatcanvas',express.static(__dirname+'/heatcanvas'));
Если я запускаю свое приложение локально с помощью Heroku Foreman, я получаю ожидаемый ответ js при запуске следующей команды curl
curl localhost:5000/heatcanvas/heatcanvas.js
Однако, когда я нажимаю на Heroku и нажимаю соответствующий URL в браузере
www.example.com/heatcanvas/heatcanvas.js
Я получаю следующее:
Cannot GET /heatcanvas/heatcanvas.js
Если я проверяю журналы Firebug и / или Heroku, я вижу, что на самом деле я получаю 404 ошибки для этих файлов, хотя путь должен соответствовать тому, что делается локально. Стоит также упомянуть, что сторонний javascript подходит просто отлично, только когда атрибут src тега script указывает на мой сайт, возникает проблема. Что мне нужно сделать, чтобы мои скрипты были доступны?
1 ответ
Я рекомендую вам использовать значение 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 выполняется таким образом).