Проблемы с запуском приложения Angular 9 в NodeJS - PullRequest
0 голосов
/ 12 марта 2020

У меня есть рабочий NodeJS сервер и приложение Angular 9. Я могу протестировать приложение в режиме разработки, оно отлично работает.

Но, когда я собираю приложение с ng build --prod и пытаюсь получить к нему доступ с сервера NodeJS, я получаю несколько ошибок о загрузке файла :

Отказался от применения стиля из 'http://localhost: 8080 / styles.09cf2cc3740ba29d305 c. css', потому что его тип MIME ('text / html ') не поддерживается типом MIME таблицы стилей, и включена строгая проверка MIME.

GET http://localhost: 8080 / runtime.689ba4fd6cadb82c1ac2. js net :: ERR_ABORTED 404 (Не найдено)

У меня есть файл прокси в приложении, чтобы перенаправить все его петиции на NodeJS:

proxy.conf. json

{
  "/api/*": {
    "target": "http://localhost:8080",
    "secure": false,
    "logLevel": "debug",
    "changeOrigin": true
  }
}

Я что-то упустил?

1 Ответ

0 голосов
/ 13 марта 2020

proxy.conf.json стремится предоставить вам простой способ доступа к backend путем переписывания URL-адреса в среде разработки с использованием ng serve.

Например, путем доступа к http://localhost:4200/api, фактически, Вы получаете доступ http://localhost:3000/api. (поэтому ваш бэкэнд).

Но здесь возникает вопрос, как обслуживать Angular файлы с NodeJS.

Вот минимальный код express, который обслуживает API конечная точка /api, а также stati c файлы в подкаталоге public.

const express = require('express')
const app = express()

app.use(express.static('public'));

app.get('/api', function (req, res) {
  res.send({ message: 'api ok' })
})

app.listen(3000, function () {
  console.log('Example app listening on port 3000!')
})

Копирование всех файлов, созданных с помощью ng build --prod, (см. Внутри папки dist и your-app-name подпапка) в папку public.

node app.js

Вы сможете получить доступ к своему приложению Angular на http://localhost:3000, а ваше приложение Angular сможет получить доступ к вашему API на http://localhost:3000/api.

...