Javascript 与节点js一起使用angular时出现Cors错误

Javascript 与节点js一起使用angular时出现Cors错误,javascript,angular,cors,mean-stack,Javascript,Angular,Cors,Mean Stack,我正在处理一个meanstack项目,在与NodeJSAPI调用通信时,我遇到了一个错误 具体如下 Access to XMLHttpRequest at 'http://localhost:5050/user/login' from origin 'http://localhost:4200' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: No

我正在处理一个meanstack项目,在与NodeJSAPI调用通信时,我遇到了一个错误 具体如下

Access to XMLHttpRequest at 'http://localhost:5050/user/login' from origin 'http://localhost:4200' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource. 
但我已经启用了CORS

// require .env
require('dotenv').config();
// requring modules
const express=require('express');
const cors=require('cors');
const mongoose=require('mongoose');



const port=5050

// initialize express application
const app=new express();

// configure application
app.use(express.json())
app.use(cors());

这里可能有什么问题?请提前感谢。

还需要将代理添加到角度代码。您可以找到详细的步骤


express是一个
工厂
函数,而不是
构造函数
函数。它应该像普通函数一样调用,而不是与
new
一起使用

你可以看到它的代码

所以你必须写作

const-app=express()


而不是
const app=new express()

要通过代理配置启用CORS,我们需要在Angular根文件夹中生成一个src/proxy.conf.json文件,并在其中放置以下代码

{
"/api/*": {
    "target": "http://localhost:3000",
    "secure": false,
    "logLevel": "debug"
}
}
在angular.json中定义代理配置值 要注册代理配置,我们需要转到angular.json文件,并将以下代码放在serve/options中。它将在Angular应用程序中设置src/proxy.conf.json文件

"architect": {
"serve": {
        "builder": "@angular-devkit/build-angular:dev-server",
        "options": {
            "browserTarget": "project-name:build",
            "proxyConfig": "src/proxy.conf.json"
        },
      }
 }
现在,您已经设置好使用当前代理配置启动dev服务器,请运行下面给定的命令。如果对代理配置文件进行任何更新,请重新启动服务器

ng serve --open
在节点/Express服务器中启用CORS 现在,我们将学习如何在Express和Node js应用程序中启用CORS。我们将研究使用第三方软件包在express中配置CORS的最简单方法之一

可以运行以下命令在node/express后端中添加cors包

npm install cors --save
接下来,您可以添加以下代码以在Express server中启用cors

// server.js

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

 app.use(cors());

 /* server configuration here */
最后,在节点服务器中启用CORS

当向应用程序发出任何请求时,将呈现Access Control Allow Origin:*标题。此标头选择授权哪个来源使用CORS访问服务器资源


此处*通配符分配来自任何源的访问权。

const-app=express()而不是
const app=new express()谢谢这解决了我的问题,但是你能解释一下这里的问题是什么吗?虽然这个链接可以回答这个问题,但最好在这里包括答案的基本部分,并提供链接供参考。如果链接页面发生更改,则仅链接的答案可能无效-
// server.js

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

 app.use(cors());

 /* server configuration here */