Búsqueda de sitios web

node.js - Nodejs: Después de importar un módulo, el código en el archivo no se está ejecutando


Estoy trabajando en algunos archivos en una aplicación de nodejs con typescript
Los archivos en cuestión son los siguientes:
some-module.ts

console.log('inside some-module');
export default class Foo {
  /*...*/
}
/*execute some imp code*/
Injector.provideClass('Foo', Foo);
console.log('done with some-module');

app.ts

console.log('inside app.ts');
import Foo from './some-module'; // this does not execute console.log! Since Foo class is only referred and not actually used in app.ts file.
class App {
  static inject = ['Foo'];
  private foo: Foo;
  constructor(foo: Foo) {
    this.foo = foo;
  }
  /*...*/
}
Injector.injectClass(App); // This throws error as Foo is not provided in injector.
console.log('Done with app.ts');

Salida (consola):

inside app.ts
Done with app.ts

Ya intentado:

  1. He intentado con const Foo=require('./some-module');, esto funciona pero no es la mejor manera de hacerlo en TypeScript. Ya que no reconoce los tipos en él.

  2. Además -> Si se pone Foo importado en console.log justo después de la declaración de importación, entonces también funciona. Dado que Foo ahora se está usando en el archivo del módulo importado.

import Foo from './some-module';
console.log(Foo); // <- After adding this simple log, it works!
  1. Además -> Si solo importas import './some-module';
    Pero de esta manera no tienes acceso a sus tipos.

tsconfig.json

{
  "compilerOptions": {
    "module": "commonjs",
    "esModuleInterop": true,
    "target": "es6",
    "noImplicitAny": true,
    "moduleResolution": "node",
    "sourceMap": false,
    "outDir": "dist",
    "baseUrl": ".",
    "lib": ["es2015"],
    "paths": {
      "*": [
        "node_modules/*"
      ]
    }
  },
  "include": [
    "src/**/*"
  ]
}

Artículos relacionados