我有一个Nestjs应用程序,我用NODE_ENV=production nest build构建. 它在我的MacBook上使用NODE_ENV=production nest start命令启动,它也使用相同的命令启动,使用我们的Prod机器的本地流浪箱实例. 但它在运行相同 node 版本16.20的Prod计算机上抛出以下代码:

[Nest] 1108076  - 06/12/2023, 9:54:51 PM     LOG [NestFactory] Starting Nest application...
[Nest] 1108076  - 06/12/2023, 9:54:51 PM   ERROR [ExceptionHandler] Nest cannot create the AppModule instance.
Received an unexpected value at index [3] of the AppModule "imports" array.

Scope []
Error: Nest cannot create the AppModule instance.
Received an unexpected value at index [3] of the AppModule "imports" array.

Scope []
    at DependenciesScanner.scanForModules (/home/check-inventory/test/node_modules/@nestjs/core/scanner.js:56:23)
    at processTicksAndRejections (node:internal/process/task_queues:96:5)
    at async DependenciesScanner.scan (/home/check-inventory/test/node_modules/@nestjs/core/scanner.js:27:9)
    at async /home/check-inventory/test/node_modules/@nestjs/core/nest-factory.js:107:17
    at async Function.asyncRun (/home/check-inventory/test/node_modules/@nestjs/core/errors/exceptions-zone.js:22:13)
    at async NestFactoryStatic.initialize (/home/check-inventory/test/node_modules/@nestjs/core/nest-factory.js:106:13)
    at async NestFactoryStatic.create (/home/check-inventory/test/node_modules/@nestjs/core/nest-factory.js:42:9)
    at async bootstrap (/home/check-inventory/test/dist/src/main.js:13:17)

我甚至通过SCP转移了我在本地构建的dist和node_模块,并调整了所有的所有权,但仍然没有运气……

我的app.module文件:

import { MiddlewareConsumer, Module, NestModule } from "@nestjs/common";
import { AppController } from "./app.controller";
import { AppService } from "./app.service";
import { TypeOrmModule } from "@nestjs/typeorm";
import { ConfigModule } from "@nestjs/config";
import { UsersModule } from "./users/users.module";
import { GroupsModule } from "./groups/groups.module";
import { RequestsModule } from "./requests/requests.module";
import { CategoriesModule } from "./categories/categories.module";
import { ItemsModule } from "./items/items.module";
import { UserInjectMiddleware } from "./middleware/user-inject.middleware";
import { TrackerModule } from "./tracker/tracker.module";
import { ScheduleModule } from "@nestjs/schedule";
import { SerialsModule } from "./serials/serials.module";
import { SocketModule } from "./socket/socket.module";
import { StoragesModule } from "./storages/storages.module";
import { AuthModule } from "./auth/auth.module";
import { APP_GUARD } from "@nestjs/core";
import { AzureValidatorGuard } from "./auth/azure-validator.guard";
import { RolesGuard } from "./auth/roles.guard";
import { StatisticsModule } from "./statistics/statistics.module";
import { config } from "./dataSource.config";

const env = process.env.NODE_ENV || "production";

@Module({
  imports: [
    ConfigModule.forRoot({
      isGlobal: true,
      envFilePath: `../.env.${env}`,
    }),
    TypeOrmModule.forRoot(config),
    ScheduleModule.forRoot(),
    process.env.EASYPOST_APIKEY ? TrackerModule : null,
    UsersModule,
    GroupsModule,
    RequestsModule,
    CategoriesModule,
    ItemsModule,
    SerialsModule,
    StoragesModule,
    SocketModule,
    AuthModule,
    StatisticsModule,
  ],
  controllers: [AppController],
  providers: [
    AppService,
    {
      provide: APP_GUARD,
      useClass: AzureValidatorGuard,
    },
    {
      provide: APP_GUARD,
      useClass: RolesGuard,
    },
  ],
})
export class AppModule implements NestModule {
  configure(consumer: MiddlewareConsumer) {
    consumer.apply(UserInjectMiddleware).forRoutes("*");
  }
}

推荐答案

imports数组不应该有null元素(也不应该有undefined).怪不得.

相反,如果您真的想像这样使用三元运算符,您可以这样做:

imports: [
  process.env.EASYPOST_APIKEY ? TrackerModule : class NoopModule {},
]

Node.js相关问答推荐

如何使用updateMany()和Node.js的方法?

使用OpenAI API时遇到问题

序列化事务未按预期工作

购物车是空的状态|本地存储不更新产品数量|Redux|

如何将Node.js与Nuxt.js一起使用?

为什么我的过滤器无法在我在下面编写的 Google Analytics 4 应用程序脚本代码中工作?我该如何修复它?

TS[2339]:类型 '() => Promise<(Document & Omit) | 上不存在属性空>'

仅在 vue 脚本未退出的情况下使用 docker 时出现错误

如何在 node /快速服务器上配置 mongoDB

如何使用 NodeJS 加密模块将 ECDH 密钥转换为 PEM 格式

try 在 NodeJS 项目中实现 SimplePay (OTP) 支付网关,但我无法获得与技术文档中相同的签名

使用react 组件加载特定 DIV 而无需重新加载整个页面

在 nodejs 中使用 multer 上传文件返回未定义的 req.file 和空的 req.body

在 React 和 Socket.io 中使用 Effect 钩子重新渲染两次

node Axios 创建全局令牌变量以在单独的变量头中使用

如何在 NestJS 中使用外部生成的 swagger.json?

如何使用 Jest 模拟异步函数的延迟时间

node 应用程序是否有任何独立的 gui 模块

nodejs - 如何读取和输出 jpg 图像?

使用 Node-sass 缩小 CSS