0

我有一个工作的 NodeJS 服务器和一个 Angular 9 应用程序。我能够在开发模式下测试应用程序,它运行良好。

但是,当我ng build --prod使用 NodeJS 服务器构建应用程序并尝试访问它时,我收到了几个关于文件加载的错误:

拒绝应用来自“ http://localhost:8080/styles.09cf2cc3740ba29d305c.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
  }
}

我错过了什么吗?

4

1 回答 1

0

proxy.conf.json旨在为您提供一种backend通过在开发环境中重写 url,使用ng serve.

例如,通过访问http://localhost:4200/api,实际上您访问http://localhost:3000/api. (所以你的后端)。

但是在这里,您的问题是如何使用 NodeJS 提供 Angular 文件。

这是服务端点的最小express代码,以及子目录中的静态文件。API/apipublic

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

于 2020-03-13T15:21:48.760 回答