#javascript #reactjs #angular #monorepo #nrwl-nx
Вопрос:
Я работаю в монорельсовом рабочем пространстве Nx. Структура рабочего пространства выглядит примерно так, как показано ниже:
Это api
приложение NestJS, а data-access-scripts-execute
это библиотека NestJS.
Я не знаю, как мне импортировать и использовать упомянутые контроллеры lib внутри моего приложения api. Ниже приведен мой код:
api
модуль приложения:
import { Module } from '@nestjs/common';
import { ConfigModule, ConfigService } from '@nestjs/config';
import { MongooseModule } from '@nestjs/mongoose';
import { AppController } from './app.controller';
import { AppService } from './app.service';
// This line says 'Cannot find module '@something/data-access-scripts-execute'
// or its corresponding type declarations.'
import { SomeController } from '@something/data-access-scripts-execute';
@Module({
imports: [
ConfigModule.forRoot({ isGlobal: true, expandVariables: true }),
MongooseModule.forRootAsync({
imports: [ConfigModule],
inject: [ConfigService],
useFactory: async (configService: ConfigService) => ({
uri: 'mongodb://localhost/something',
useFindAndModify: false,
}),
}),
],
controllers: [AppController],
providers: [AppService],
})
export class AppModule {}
Контроллер lib:
import { Controller, Post } from '@nestjs/common';
import { SomeService } from './some.service';
import { SomeEntity } from './schemas/some.schema';
@Controller('some-address')
export class SomeController {
constructor(private readonly _service: SomeService) {}
@Post()
async create(): Promise<SomeEntity> {
console.log('create called');
return this._service.create();
}
}
Я должен также упомянуть, что:
- Все мои угловые библиотеки могут видеть другие угловые библиотеки
- Мое приложение api может видеть все мои угловые библиотеки
- Все мои библиотеки NestJS не могут видеть другие библиотеки
- Все мои библиотеки NestJS не могут быть видны другим библиотекам и приложениям
По слову see
Я на самом деле имею в виду @something
, как называется мой проект.
Ниже также приведен мой tsconfig.base.json
файл, который находится в корне рабочей области:
{
"compileOnSave": false,
"compilerOptions": {
"rootDir": ".",
"sourceMap": true,
"declaration": false,
"moduleResolution": "node",
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
"importHelpers": true,
"target": "es2015",
"module": "esnext",
"lib": ["es2017", "dom"],
"skipLibCheck": true,
"skipDefaultLibCheck": true,
"baseUrl": ".",
"paths": {
"@something/system": ["libs/system/src/index.ts"],
"@something/feature-some-angular-lib": [
"libs/feature-some-angular-lib/src/index.ts"
],
"@something/feature-some-angular-lib": [
"libs/feature-some-angular-lib/src/index.ts"
],
"@something/shared": ["libs/shared/src/index.ts"],
"@something/data-access-scripts-execute": ["libs/data-access-scripts-execute/src/index.ts"]
}
},
"exclude": ["node_modules", "tmp"]
}
Я также должен сказать, что изображение не является полным из-за соображений конфиденциальности.
Ответ №1:
Я столкнулся с аналогичной проблемой, и причиной этого была "baseUrl": "."
собственность в приложении tsconfig.app.json
Попробуйте удалить это и посмотрите, решит ли это вашу проблему. Это только мое предположение, и я не могу много сказать, не посмотрев на ваше tsconfig.app.json