web-dev-qa-db-fra.com

LernaJS TypeScript ne trouve pas le module

J'essaie d'utiliser LernaJS avec TypeScript et j'ai des problèmes. Lorsque j'essaie d'exécuter mon package-1 qui a package-2 comme dépendance, j'obtiens l'erreur:

 
 module.js: 549 
 erreur de lancer; 
 ^ 
 
 Erreur: impossible de trouver le module 'package-2' 
 sur Function.Module._resolveFilename (module.js: 547: 15) 
 sur Function.Module._load (module.js: 474: 25) 
 sur Module.require (module .js: 596: 17) 
 chez require (internal/module.js: 11: 18) 
 chez Object. (/home/gabriel/Documentos/projetos/nodejs/lerna-t2/packages/package-1/dist/index.js:3:19)
 sur Module._compile (module.js: 652: 30) 
 sur Object.Module._extensions..js (module.js: 663: 10) 
 sur Module.load (module.js: 565: 32) 
 sur tryModuleLoad (module .js: 505: 12) 
 sur Function.Module._load (module.js: 497: 3) 
 

J'ai suivi les étapes suivantes:

  1. J'ai créé un répertoire et exécuté la commande 'lerna init'
  2. J'ai créé 2 dossiers à l'intérieur (package-1, package-2) du dossier 'packages'
 
. 
 ├── lerna.json 
 ├── node_modules 
 ├── package.json 
 ├── package-lock.json 
 └── packages 
 ├── package-1 
 └── package-2 
 
  1. J'ai exécuté 'npm init' dans les deux (package-1, package-2)
  2. J'ai créé un 'tsconfig.json' de base dans les deux packages:
 
 {
 "options de compilation": {
 "outDir": "dist", 
 "target": "es5", 
 "module": "commonjs" 
} 
} 
 
  1. J'ai exécuté 'lerna bootstrap' dans le dossier racine
  2. J'ai utilisé 'lerna add package-2 --scope = package-1'
  3. J'ai également exécuté 'npm i' dans le dossier racine, package-1 et package-2
  4. J'ai exécuté 'tsc -w' dans package-1 et package-2 et 'node dist/index.js' dans package-1

FILE TREE

Mon arborescence de fichiers 'package-1':

 
. 
 ├── dist 
 │ └── index.js 
 ├── index.ts 
 ├─ ─ node_modules 
 │ ├── package-2 -> ../../package-2
 │ └── TypeScript 
 ├── package.json 
 ├── package-lock.json 
 └── tsconfig.json 
 

Mon arborescence de fichiers 'package-2':

 
. 
 ├── dist 
 │ ├── index.js 
 │ └── lib 
 │ └─ ─ teste.js 
 ├── index.ts 
 ├── lib 
 │ └── teste.ts 
 ├── package.json 
 ├── package-lock.json 
 └── tsconfig.json 
 

CODE

package-1:

  • index.ts:
 
 importer {Teste} à partir de 'package-2' 
 
 new Teste (). printHello () 
 

package-2:

  • lib/teste.ts:
 
 classe d'exportation Teste {
 
 printHello () {
 console.log ('Bonjour!') 
} 
 
} 
 
  • index.ts:
 
 exporter {Teste} à partir de './lib/teste'[.____.
12
J G

Veuillez vous assurer d'avoir défini main dans votre package.json dans (au moins projet-2). Je suppose que le champ du nom dans package.json (pour le projet-2) est project-2.

Le lien principal doit être lié à dist/index.js

7
lajtmaN