angular - I Angular, hvorfor registreres ikke OpenApi-genererte ApiModule når den deklareres i node_modules, men fungerer utenfor den mappen?


Jeg har et problem. Jeg trenger å bruke OpenApi-genererte filer (tjenester, grensesnitt) via NPM-pakke. Problemet er at det ikke fungerer når det er i node_modules, men hvis jeg flytter det utenfor denne mappen, fungerer det. ApiModule blir av en eller annen grunn undefined når det er i node_modules. Github-lenken nederst er dokumentasjon om hvordan man bruker det.

Prosjektet bygger, det oppdager filene i banen, men når jeg åpner nettsiden får jeg feil:

app.module.ts:30 Uncaught TypeError: Cannot read properties of undefined (reading 'forRoot')
    at Module.6747 (app.module.ts:30)
    at __webpack_require__ (bootstrap:19)
    at Module.4431 (environment.ts:16)
    at __webpack_require__ (bootstrap:19)
    at __webpack_exec__ (log$:23)
    at log$:23
    at Function.__webpack_require__.O (chunk loaded:23)
    at log$:23
    at webpackJsonpCallback (jsonp chunk loading:33)
    at main.js:1

AppModule :

import { NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';

import { AppComponent } from './app.component';

////// added
import { HttpClientModule } from '@angular/common/http';
import {
  ApiModule,
  Configuration,
  ConfigurationParameters,
} from 'client-petstore';


export function apiConfigFactory(): Configuration {
  const params: ConfigurationParameters = {
    basePath: 'https://localhost:4200',
  };
  return new Configuration(params);
}
////// end

@NgModule({
  declarations: [
    AppComponent
  ],
  imports: [
    BrowserModule,
    ////// added
    ApiModule.forRoot(apiConfigFactory),
    HttpClientModule
    ////// end
  ],
  providers: [],
  bootstrap: [AppComponent]
})
export class AppModule { }

Jeg har prøvd dette på 2 forskjellige maskiner som kjører Angular 12 (Node.js v12 og v16) med:

  • min lokalt genererte fil;

  • “npm typescript-codegen-petstore ” lastet ned (krever å legge til override-nøkkelordet og legge til der det feiler);

  • https://github.com/OpenAPITools/openapi-generator/tree/master/samples/client/petstore/typescript-angular-v12-provided-in-root/builds/with-npm (https://download-directory.github.io for å laste ned denne delen)

Hvis jeg legger det i en annen mappe enn node_modules, fungerer det, inne i den gjør det ikke. Noen hjelp eller ideer? Takk.

Svar #1

Jeg hadde det samme problemet da jeg publiserte modulen bare med npm publish i stedet for npm publish dist/. Du må spesifisere mappen som genereres av bygget når du publiserer pakkene!

Jeg gjenskapte feilen med en testpakke - maddob-petstore-test-klient.

  1. Versjon 1.0.0 er publisert uten å spesifisere mappen og fungerer ikke
  2. Versjon 1.0.2 er publisert med spesifisering av dist-mappen og fungerer som forventet