Open9
nest 構築 メモ
Moduleを追加する
npx nest g module mongodb
- Globalなモジュールにするには Globalデコレータをつければ良い
- moduleのExportにはproviderのprovideをキーとして指定できる
単一のアプリケーションの開発中にマイクロサービスも実装する場合は↓が便利
便利だけど本番では使えないパターンなので本番でどうするか要確認
async function bootstrap() {
const app = await NestFactory.create(AppModule);
const client = app.get(MongoClient);
app.connectMicroservice<MicroserviceOptions>({
strategy: new MongoSubscriptionServer(client),
});
await app.startAllMicroservices();
await app.listen(3000);
}
bootstrap();
アクセスログを出す場合は、Expressの場合は普通にmorganを入れれば良い
nestjsのスタックトレースにtsの型情報を表示させるには↓
- webpack.config.jsを作成して以下の内容をペースト
module.exports = function (options) {
return {
...options,
devtool: 'source-map',
};
};
- source-map-supportをインストール
- main.tsで
import 'source-map-support/register';
を追加する
別のモジュールで定義したmongoose モデルをインポートするには、他のモジュールでMonsooseModuleをexport しないとだめ
nodejsのmongodbには カスタムデータタイプをサポートする方法はなさそう… ?
yarn workspaceでWebpackを使うビルドで以下エラーが出るときはWebpackをdisableすれば良い
Module not found: Error: Can't resolve '@nestjs/websockets/socket-module' in '..../node_modules/@nestjs/core'
nestjsでinterfaceにDIするには、同名のsymbolをExportしておく
export interface IService {
get(): Promise<string>
}
export const IService = Symbol("IService");
import { IService } from '../interfaces/service';
@Injectable()
export class ServiceImplementation implements IService { // Used as an interface
get(): Promise<string> {
return Promise.resolve(`Hello World`);
}
}