Я использую экспресс и руль. Проблема в том, что на страницах с такими URL-адресами, как http://localhost:5000/api/posts, нет файлов css. Однако такие маршрутизаторы, как http://localhost:5000 или http://localhost:5000/register, работают совершенно нормально.
каталоги
app
-server.js
-routes
-api
-posts.js
-public
-css
-images
-views
-layout
-main.handlebars
-posts.handlebars
в server.js. (только важная часть)
app.engine('handlebars', exphbs());
app.set('view engine', 'handlebars');
app.use(express.static(path.join(__dirname, 'public')));
app.get('/', (req, res) => res.render('index'));
app.get('/register', (req, res) => res.render('register'));
app.use('/api/posts', require('./routes/api/posts'));
Поскольку я включил app.use(express.static(path.join(__dirname, 'public')));
в server.js, я подумал, что не должно быть никаких проблем со статическими файлами.
Однако в main.handlebars <link rel="stylesheet" href="css/main.css">
не работает. С другой стороны, <link rel="stylesheet" href="../css/main.css">
работал.
Более того, это также сработало, если я изменил app.use('/api/posts', require('./routes/api/posts'));
на app.use('/posts', require('./routes/api/posts'));
Есть ли другие способы решения этой проблемы, если я не хочу менять здесь маршруты?
Ошибка, когда css не включена, была Refused to apply style from 'http://localhost:5000/api/css/main.css' because its MIME type ('text/html') is not a supported stylesheet MIME type, and strict MIME checking is enabled.
Однако я не знаю, как сделать общедоступный путь по умолчанию. для статических файлов, так как я уже включил app.use(express.static(path.join(__dirname, 'public')));
.