NestJS 在生产中启用 cors

2022-01-15 00:00:00 cors node.js javascript typescript nestjs

我已经按照 官方教程在我的 NestJS 应用中启用了 CORS,所以我的 main.ts 如下所示:

I've enabled CORS in my NestJS app following the official tutorial, so my main.ts looks like the following:

import { FastifyAdapter, NestFactory } from '@nestjs/core';
import { AppModule } from './app.module';

async function bootstrap() {
  const app = await NestFactory.create(AppModule, new FastifyAdapter(), { cors: true });
  await app.listen(3000);
}
bootstrap();

当我使用 npm run start:dev 运行应用程序时它可以工作.

and it works when I run the application using npm run start:dev.

但是,当我尝试首先使用 npm run webpack 编译应用程序,然后使用 node server.js 运行它时,cors 将无法工作.

However when I try to first compile the application using npm run webpack and then running it using node server.js, the cors will not work.

来自客户端的 http 请求将失败:

The http request from the client will fail with:

对预检请求的响应未通过访问控制检查:请求的资源上不存在Access-Control-Allow-Origin"标头.Origin 'http://localhost:8000' 因此不允许访问.响应的 HTTP 状态代码为 404.

Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:8000' is therefore not allowed access. The response had HTTP status code 404.

推荐答案

不知何故,问题是使用 npm run webpack 编译它.如果我使用 prestart:prod 编译它,那么它将起作用.

Somehow the issue was compiling it using npm run webpack. If I compile it using prestart:prod then it will work.

感谢@georgii-rychko 通过评论提出建议.

Thanks @georgii-rychko for suggesting it via comments.

相关文章