Ошибка: ENOENT, такого файла или каталога нет /var/www/html/views при публикации приложения в Ubuntu
Моя папка приложения nodejs выглядит ниже.
Файл index.html находится внутри папки views, а общая папка содержит страницы partials.
Ниже приведен небольшой фрагмент из index.html, который отлично работает, пока узел работает локально на компьютере.
<section id="sidebar" ng-controller="menuController" ng-init="init()">
<% include ..\public\partials\_menubar.html %>
</section>
Но когда я запускаю код на сервере, он выдает ошибку.
Error: ENOENT, no such file or directory
'/var/www/html/views/..\public\partials\_menubar.html'
at Object.fs.openSync (fs.js:432:18)
at Object.fs.readFileSync (fs.js:286:15)
at includeSource (/var/www/html/node_modules/ejs/lib/ejs.js:194:17)
at /var/www/html/node_modules/ejs/lib/ejs.js:528:26
at Array.forEach (native)
at Object.Template.generateSource (/var/www/html/node_modules/ejs/lib/ejs.js:505:15)
at Object.Template.compile (/var/www/html/node_modules/ejs/lib/ejs.js:427:12)
at Object.compile (/var/www/html/node_modules/ejs/lib/ejs.js:288:16)
at handleCache (/var/www/html/node_modules/ejs/lib/ejs.js:147:16)
at View.exports.renderFile [as engine] (/var/www/html/node_modules/ejs/lib/ejs.js:350:14)
Я пытался использовать приведенный ниже код, но безуспешно.
app.use(express.static(path.join(__dirname, 'public')));
1 ответ
Решение
Linux использует /
в качестве разделителя каталогов, поэтому файл не может быть найден, так как вы используете Windows' \
разделитель.
Также обратите внимание, что, кроме windows, linux чувствителен к регистру, поэтому вам необходимо убедиться, что в именах ваших файлов / каталогов указан правильный регистр.