Невозможно загрузить стиль и выполнить скрипт Express JS - PullRequest
0 голосов
/ 31 августа 2018

У меня есть запрос GET для загрузки html-страницы в мой файл rout.js с использованием

  app.get('/api/testresult', (req, res) => {
    res.sendFile('/path/myfile.html');
  });

Кроме того, в моем server.js у меня есть следующее

const express        = require('express');
const bodyParser     = require('body-parser');
const app            = express();
const path = require('path');

const port = 8000;

app.use('/', express.static(path.join(__dirname, './app/report')));
require('./app/routes')(app, {});
app.listen(port, () => {
  console.log('Server running on ' + port);
});

Однако, когда я пытаюсь сделать GET-вызов, он выдает ошибку на консоли браузера

localhost/:1 Refused to apply style from
'http://localhost:8000/api/testresult/assets/app.css' because its MIME type ('text/html') is not a supported stylesheet MIME type, and strict MIME checking is enabled.
localhost/:2 GET http://localhost:8000/api/testresult/assets/app.js 404 (Not Found)
localhost/:1 Refused to execute script from 'http://localhost:8000/api/testresult/assets/app.js' because its MIME type ('text/html') is not executable, and strict MIME type checking is enabled.

Моя файловая структура

MyApp 
app 
 —report 
      —assets 
        —app.css
        —app.js
     —my file.html
 —routes
    —index.js
    —routes.js
node_modules
package.json
server.js

Что мне здесь не хватает?

1 Ответ

0 голосов
/ 31 августа 2018

Итак, ваша иерархия каталогов показывает app.js на /assets/app.js от того места, куда вы указали свое промежуточное ПО express.static(). Таким образом, это URL, который вам нужно будет использовать для обслуживания этого файла, но вы, очевидно, используете URL с путем /api/testresult/assets/app.js. Те просто не совпадают. Этот URL будет искать в:

app/report/api/testresult/assets/app.js

Но дело не в этом файле (таким образом, вы получите 404).

Вы можете исправить это несколькими способами:

  1. Измените URL на стороне клиента на "/assets/app.js". Я предполагаю, что вы, возможно, указали "assets/app.js" в своем файле клиента. Поскольку это относительный URL-адрес, браузер затем объединит его с путем к вашей веб-странице для создания URL-адреса, который ваш сервер получил для запроса /api/testresult/assets/app.js.
  2. Измените строку express.static, добавив правильный префикс пути app.use('/api/testresult', express.static(path.join(__dirname, './app/report')));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...