在NodeJS中运行Angular 9应用时出现问题

时间:2020-03-12 12:09:34

标签: node.js angular angular-cli-v9

我有一个工作的NodeJS服务器和一个Angular 9应用程序。我可以在开发模式下测试该应用程序,它可以完美运行。

但是,当我使用ng build --prod构建应用程序并尝试使用NodeJS服务器对其进行访问时,我遇到了一些有关文件加载的错误:

拒绝应用以下样式 “ http://localhost:8080/styles.09cf2cc3740ba29d305c.css”,因为 MIME类型('text / html')不是受支持的样式表MIME类型,并且 启用了严格的MIME检查。

获取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 :(得分: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

您将可以通过http://localhost:3000访问Angular应用,而Angular应用将可以通过http://localhost:3000/api访问API。