Ошибка: 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 чувствителен к регистру, поэтому вам необходимо убедиться, что в именах ваших файлов / каталогов указан правильный регистр.

Другие вопросы по тегам