以生产模式启动nestjs

5

我正在使用我购买的akveo后端捆绑包,尽管在开发模式下一切似乎都正常工作,但在生产环境中开始时却出现以下错误。我对nestjs本身还很陌生。有人知道这是怎么回事吗?

node_modules/@nestjs/core/adapters/http-adapter.d.ts:5:31 - error TS2420: Class 'AbstractHttpAdapter<TServer, TRequest, TResponse>' incorrectly implements interface 'HttpServer<TRequest, TResponse>'.
    Property 'status' is missing in type 'AbstractHttpAdapter<TServer, TRequest, TResponse>' but required in type 'HttpServer<TRequest, TResponse>'.

5 export declare abstract class AbstractHttpAdapter<TServer = any, TRequest = any, TResponse = any> implements HttpServer<TRequest, TResponse> {
~~~~~~~~~~~~~~~~~~~

    node_modules/@nestjs/common/interfaces/http/http-server.interface.d.ts:26:5
    26     status(response: any, statusCode: number): any;
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    'status' is declared here.

    node_modules/@nestjs/core/application-config.d.ts:2:39 - error TS2307: Cannot find module '@nestjs/common/interfaces/configuration-provider.interface'.

    2 import { ConfigurationProvider } from '@nestjs/common/interfaces/configuration-provider.interface';
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    node_modules/@nestjs/core/guards/guards-context-creator.d.ts:3:39 - error TS2307: Cannot find module '@nestjs/common/interfaces/configuration-provider.interface'.

3 import { ConfigurationProvider } from '@nestjs/common/interfaces/configuration-provider.interface';
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    node_modules/@nestjs/core/interceptors/interceptors-context-creator.d.ts:2:39 - error TS2307: Cannot find module '@nestjs/common/interfaces/configuration-provider.interface'.

2 import { ConfigurationProvider } from '@nestjs/common/interfaces/configuration-provider.interface';
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    node_modules/@nestjs/core/nest-application.d.ts:24:5 - error TS2416: Property 'getHttpAdapter' in type 'NestApplication' is not assignable to the same property in base type 'INestApplication'.
    Type '() => AbstractHttpAdapter<any, any, any>' is not assignable to type '() => HttpServer<any, any>'.
    Property 'status' is missing in type 'AbstractHttpAdapter<any, any, any>' but required in type 'HttpServer<any, any>'.

24     getHttpAdapter(): AbstractHttpAdapter;
~~~~~~~~~~~~~~

    node_modules/@nestjs/common/interfaces/http/http-server.interface.d.ts:26:5
26     status(response: any, statusCode: number): any;
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    'status' is declared here.


    Found 5 errors.

我使用tsc -p tsconfig.build.json命令来使用tsconfig.build.json构建它:

{
    "extends": "./tsconfig.json",
    "exclude": ["node_modules", "test", "**/*spec.ts"]
}

还有 tsconfig.json

{
    "compilerOptions": {
        "module": "commonjs",
        "declaration": true,
        "removeComments": true,
        "emitDecoratorMetadata": true,
        "experimentalDecorators": true,
        "target": "es6",
        "sourceMap": true,
        "outDir": "./dist",
        "baseUrl": "./"
    },
    "exclude": ["node_modules"]
}

我期望这个配置可以将TypeScript代码编译成JavaScript,然后我可以使用"node dist/main.js"命令来运行它。实际上它确实可以做到这一点。但是我还担心TypeScript编译器的错误。

请将您的错误信息粘贴到StackOverflow上。图片难以阅读,会让其他人不愿意帮助您。您使用了哪些启动命令?您是如何构建项目的?您是如何测试部署的?如果您正在部署服务器,您想要部署到哪里? - Jay McDoniel
抱歉,我会记住这点的。我已经编辑了问题。 - antanas_sepikas
1个回答

8

没有代码很难确定,但我曾经在nest核心包中遇到过类似的错误。请检查 package.json 文件,并确保所有的@nest包版本相同,因为有时它们会有“破坏性”更改,即使没有进行重大发布。

举个抽象的例子,像这样在构建生产环境时会让我遇到与core相关的错误:

   "@nestjs/common": "6.6.0",  // notice the core/common does not match, it should be bumped
   "@nestjs/core": "6.6.2",

事实证明,这确实是问题所在。尽管现在我遇到了nestjs无法解决mongoose @InjectModel依赖的问题。但这是另一个问题。 - antanas_sepikas

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接