Синтаксическая ошибка в Express (Node) при развертывании приложения Angular: Uncaught SyntaxError: Неожиданный токен - PullRequest
0 голосов
/ 22 января 2019

Итак, я создал угловые приложения, и когда я сделал ng build --prod, он пошел успешно , без ошибок и без предупреждений вообще.

Я планирую скопировать все эти сгенерированные файлы из процесса сборки в каталог views/ на моем сервере Node Express, это будет выглядеть следующим образом

--server
---server.js
---views/
----index.html
----main.000000000.js
----runtime.000000.js
----styles.000000.css
----icon_000000.png
----etc (all generated files from `ng build --prod`)

То, что я положил внутрь server.js, былопростое приложение, как показано ниже:

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

const app = express();

app.use(cors());
app.use(morgan('dev'));
app.use(bodyParser.urlencoded({ extended: false }));
app.use(bodyParser.json());

// Routes
app.use(express.static(path.join(__dirname, 'views/')));
app.get('*', (req, res) => {
    return res.sendFile(path.join(__dirname, `views/index.html`));
});

const port = process.env.PORT || 3001;
app.listen(port);

console.log('Server has started on port ' + port);

Когда я нажму localhost:3001/, это даст много ошибок Uncaught SyntaxError: Unexpected token <, ошибка в основном означает, что когда браузер запрашивает те (некоторые)статические файлы будут отвечать сервером index.html вместо коррелированных статических файлов.

Как я исправляю, используя следующий код:

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

const app = express();

app.use(cors());
app.use(morgan('dev'));
app.use(bodyParser.urlencoded({ extended: false }));
app.use(bodyParser.json());

const allowed = [
  '.js',
  '.css',
  '.png',
  '.jpg',
  '.gif',
  '.ico',
  '.svg',
  '.woff',
  '.eot',
  '.ttf',
];

app.get('*', (req, res) => {
   if (allowed.filter(ext => req.url.indexOf(ext) > 0).length > 0) {
      res.sendFile(path.resolve(`views/${req.url}`));
   } else {
      res.sendFile(path.join(__dirname, 'views/index.html'));
   }
});

const port = process.env.PORT || 3001;
app.listen(port);

console.log('Server has started on port ' + port);

Однако решение выше грязное,как мы должны жестко кодировать все не .html статические файлы, которые были внутри /dist, мне нужно другое решение здесь, как решить эту проблему без жесткого кода каждого расширения статического файла?я делаю что-то не так во время углового ng build --prod?

Спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...