#node.js #express
#node.js #экспресс
Вопрос:
Я не могу обслуживать статические файлы в режиме отладки. Я использую аутентификацию по паспорту. Index.html это страница входа в систему с формой (POST to /login). В режиме отладки после успешной аутентификации сервер перенаправляет на / home, но я не могу ПОЛУЧИТЬ свои файлы css и javascript.
Файлы находятся в каталоге /public .
/public
/css
/javascripts
/images
index.html
home.html
/routes
в app.js:
app.use(express.static(path.join(__dirname, 'public')));
в routes/index.js
/* GET Home Page */
router.get('/home', isAuthenticated, function(req, res){
var root = join(__dirname, '/..');
root = join(root, '/public/');
res.sendFile('home.html', { root: root});
});
/* Handle Login POST */
router.post('/login', passport.authenticate('login', {
successRedirect: '/home',
failureRedirect: '/',
failureFlash : true
}));
Я использую VS Code. Вот launch.json .
{
"version": "0.2.0",
"configurations": [
{
"name": "Launch",
"type": "node",
"request": "launch",
"program": "${workspaceRoot}/bin/www",
"stopOnEntry": false,
"args": [],
"cwd": "${workspaceRoot}",
"preLaunchTask": null,
"runtimeExecutable": null,
"runtimeArgs": [
"--nolazy"
],
"env": {
"NODE_ENV": "development"
},
"console": "internalConsole",
"sourceMaps": false,
"outDir": null
},
{
"name": "Attach",
"type": "node",
"request": "attach",
"port": 5858,
"address": "localhost",
"restart": false,
"sourceMaps": false,
"outDir": null,
"localRoot": "${workspaceRoot}",
"remoteRoot": null
},
{
"name": "Attach to Process",
"type": "node",
"request": "attach",
"processId": "${command.PickProcess}",
"port": 5858,
"sourceMaps": false,
"outDir": null
}
]
}
Комментарии:
1. Как вы загружаете свои файлы .css и .js?
2. В HTML-файле с помощью <link> и <script>
<script type="text/javascript" src="materialize/js/materialize.min.js"> <link type="text/css" rel="stylesheet" href="materialize/css/materialize.min.css" media="screen,projection"/>
3. Где находятся materialize.min.js и сохранить файлы materialize.min.css?
4. Комментарий выше, имея в виду, что вы установили app.use … на «общедоступный»
5. папка materialize является общедоступной. Все работает идеально, пока я не запущу приложение в режиме отладки в VS Code. В каталоге ‘/’ приложение загружает css, js-файлы и т. Д. Затем я ввожу учетные данные (пользователь, пароль), и после успешной авторизации приложение перенаправляется с «/» на «/ home». В каталоге ‘/ home’ я не могу загружать файлы css, js (но только в режиме отладки).
Ответ №1:
У меня тоже была эта проблема. Для меня это было то, что рабочий каталог был установлен неправильно. Установка его в папку, содержащую мой статический корень, сработала. В вашем случае вы можете попробовать:
"cwd": "${workspaceRoot}/bin/www",