/styles.css
пропадает после обновления страницы.
Вот мой package.json
скрипт сборки:
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"clean": "rimraf dist",
"start": "nodemon -e js,css,handlebars -i scss --watch app --exec babel-node app/app.js",
"build": "npm run clean && mkdir -p dist && babel app -s -D -d dist",
"serve": "node dist/app.js",
"postinstall": "npm run build"
},
Проблема существует только в версии dist
.
Я запускаю npm run build
, затем npm run serve
.
. Это позволяет создать и скопировать каждый файл в папку /dist
.
Приложение обслуживается в /dist/app.js
.
Итак /styles.css
загружается при начальной загрузке, но последующие загрузки показывают, что запрос отменен.Пробовал загружать сайт с приватным окном, но проблема сохраняется.Он загружает только один раз снова после перезагрузки сервера.
снимок экрана запроса
Вот app.js
:
import bodyParser from 'body-parser'
import express from 'express'
import exphbs from 'express-handlebars'
import path from 'path'
import sassMiddleware from 'node-sass-middleware'
const PORT = process.env.PORT || 3000
const app = express()
// Config
app.locals.config = require('./config.json')
// Views and handlebars view engine
const hbs = exphbs.create({
defaultLayout: 'main',
layoutsDir: 'app/views/layouts',
helpers: {
sitename: function () {
return app.locals.config.sitename
},
ga: function () {
if (process.env.NODE_ENV === 'production') {
...
}
},
},
})
app.engine('handlebars', hbs.engine)
app.set('views', path.join(__dirname, 'views'))
app.set('view engine', 'handlebars')
// Body parser
app.use(bodyParser.json())
app.use(bodyParser.urlencoded({extended: false}))
// Sass middleware
app.use(sassMiddleware({
src: path.join(__dirname, 'public/scss'),
dest: path.join(__dirname, 'public/css'),
outputStyle: 'compressed',
sourceMap: true,
}))
// Static folder
app.use(express.static(path.join(__dirname, 'public')))
// Routes
app.use(require('./routes/index.js'))
const server = app.listen(PORT, () => console.log(`listening at port ${PORT}...`))
Я загружаю /styles.css
с этим в моем представлении шаблона:
<link rel="stylesheet" href="/styles.css">
Обновление и решено:
Я должен был добавить, что моя структура папок выглядит следующим образом:
/app
- public/
- css
- js
- scss
- routes/
- ...
- views/
- ...
Решил проблему, изменив путь src
в шаблоне представлений:
<link rel="stylesheet" href="/css/styles.css">
Пришлось добавить prefix
к node-sass-middleware
слишком для локальной разработки.
// Sass middleware
app.use(sassMiddleware({
src: path.join(__dirname, 'public/scss'),
dest: path.join(__dirname, 'public/css'),
prefix: '/css',
outputStyle: 'compressed',
sourceMap: true,
}))