Estamos usando mecanografiado y exportando una clase de la siguiente manera (estamos usando nuxt y el componente de estilo de clase si esto se relaciona con el problema del paquete web).
export class ApiService { static apiHost = '/'; } Cuando intentamos importarlo de la siguiente manera, da ApiService como undefined y, por lo tanto, da un error en el acceso a apiHost ya que ApiService se vuelve undefined .
import { ApiService } from '../services/api-service';
mi tsconfig es el siguiente.
{ "compilerOptions": { "module": "commonjs", "declaration": false, "removeComments": true, "noLib": false, "allowSyntheticDefaultImports": true, "emitDecoratorMetadata": true, "experimentalDecorators": true, "allowJs": true, "target": "esnext", "resolveJsonModule": true, "sourceMap": true, "outDir": "./dist", "esModuleInterop": true, "moduleResolution": "node", "baseUrl": "./", "skipLibCheck": true, // TODO: Remove. Temporary. https://github.com/nuxt/typescript/issues/49 "paths": { "~/*": ["server/*"], "@/*": [ "client/*" ], }, "types": [ "node", "@types/node", "@nuxt/vue-app", "vuex-class-component/dist", ] }, "include": [ "server/**/*", "client/**/*" ], "exclude": [ "node_modules" ] }mi webpack.config.js
const webpack = require('webpack'); const path = require('path'); const nodeExternals = require('webpack-node-externals'); const WebpackShellPlugin = require('webpack-shell-plugin'); module.exports = { entry: ['webpack/hot/poll?1000', './server/main.ts'], watch: true, target: 'node', externals: [ nodeExternals({ allowlist: ['webpack/hot/poll?1000'], }), ], module: { rules: [ { test: /\.tsx?$/, use: 'ts-loader', exclude: /node_modules/, }, ], }, mode: 'development', resolve: { extensions: ['.tsx', '.ts', '.js'], }, plugins: [ new webpack.HotModuleReplacementPlugin(), new WebpackShellPlugin({ onBuildEnd: ['node dist/main.js'] }), ], output: { path: `${__dirname}/dist`, publicPath: '/', }, }; Comando Estoy ejecutando ts-node -r tsconfig-paths/register server/main.ts
En realidad, no publiqué el código completo porque pensé que no era necesario.
Pero el servicio también devolvía la llamada a la clase donde se importó el servicio.
import { AuthConfig } from '../config/auth-config'; export class ApiService { static apiHost = '/'; static mgr = new Oidc.UserManager( new AuthConfig().IdentityServerOAuth2Config, // This was causing issue as it was causing cyclic imports. ); }El siguiente es el código donde estaba ocurriendo la dependencia cíclica.
import ApiService from '../services/api-service'; export class AuthConfig { `${ApiService.apiHost}api/callback` // This was again calling back the apiService resulting in cyclic dependency. }