我最近开始为 NestJS 学习 Docker,当我运行 docker-compose up 时出现错误 nest: not found
Dockerfile
FROM node:16-alpine
WORKDIR D:\Backends\jwt\jwt-auth
COPY package*.json ./
RUN npm install
COPY . .
EXPOSE 3000
CMD [ "npm", "run", "start:dev" ]
由于全局注册的Guard
需要Reflector
,JwtService
和ConfigService
,因此决定制作一个全局模块,将上述依赖项导入自身。
@Global()
@Module({
imports: [
ConfigModule.forRoot({
...
}),
JwtModule.registerAsync({
imports: [ConfigModule],
inject: [ConfigService],
useFactory(configService: ConfigService): JwtModuleOptions {
return {
signOptions: {
algorithm: 'HS256',
issuer: configService.get('JWT_ISSUER'),
},
};
},
}),
Reflector,
],
})
export class CommonModule {}
然后将其导入 AppModule:
@Module({
imports: [
CommonModule /* <-- */ ,
...
],
controllers: [],
providers: [{ provide: APP_GUARD, useClass: AuthGuard }],
})
export class AppModule {}
此外Guard
,我使用JwtService
in JwtFactoryService
,用于生成用于身份验证的令牌。由于它JwtModule
已经在全球范围内注册,我没有将它导入到 AuthModule 中,但由于某种原因,来自的依赖项CommonModule
不会迁移到AuthModule
.
Potential solutions:
- If JwtService is a provider, is it part of the current AuthModule?
- If JwtService is exported from a separate @Module, is that module imported within AuthModule?
@Module({
imports: [ /* the Module containing JwtService */ ]
})
Error: Nest can't resolve dependencies of the JwtFactoryService (?, ConfigService). Please make sure that the argument JwtService at index [0] is available in the AuthModule context.
是否有可能在nest.js中以某种方式快速生成一个结构,以免一个接一个地键入命令:
- nest generate module roles
- nest generate service roles
- nest generate controller roles
使用类似的东西会很酷nest generate module,service,controller roles
。
有谁知道解决方案?
我想通过同一个局域网连接到服务器。但由于服务器是在本地主机上创建的,我无法连接到另一台设备。谷歌没有帮助