Я создал приложение ExpressJS с механизмом управления рулем и запуском приложения через npm start
, мне все хорошо, так как все ресурсы загружаются.
Вот моя структура папок :
- public
- css
- svg
- uploads
- views
- layouts
> home.handlebars
А вот соответствующие материалы моего индекса. js:
const express = require('express');
const exphbs = require('express-handlebars');
const path = require('path');
const fs = require('fs');
const port = 5000;
const index = express();
app.set('views', path.join(__dirname, '/', 'views'));
app.use(express.static(__dirname + '/public'));
app.engine('handlebars', exphbs({
defaultLayout: 'main',
layoutsDir: path.join(__dirname, '/', 'views', 'layouts')}
));
app.set('view engine', 'handlebars');
Вот содержимое моего сейчас. json:
{
"version": 2,
"builds": [
{
"src": "index.js",
"use": "@now/node-server"
}
],
"routes": [
{
"src": "/",
"dest": "/",
"methods": ["GET"]
},
{
"src": "/justaroute",
"dest": "/",
"methods": ["POST"]
}
]
}
Проблема
Как я уже говорил выше, использование npm start
показывает мое рабочее приложение, но с использованием now dev
my приложение не может найти какие-либо ресурсы (в консоли отображается 404): http://localhost:3000/css/icons.css net::ERR_ABORTED 404 (Not Found)
http://localhost:3000/uploads/[...].jpg 404 (Not Found)
.
Похоже, что
app.set('views', path.join(__dirname, '/', 'views'));
задает путь к представлениям как root для активов загружаются представления.
Внутри представлений Я загружаю активы следующим образом:
<link rel="stylesheet" type="text/css" href="css/icons.css">
Я уже пытался добавить /public/[...]
к ссылкам на ресурсы и получить папку publi c явно, добавив app.set('public', path.join(__dirname, '/', 'public'));
, в результате чего Chrome все еще не найдет ресурсы: http://localhost:3000/public/css/icons.css net::ERR_ABORTED 404 (Not Found)