node.js - LernaJS Typescript kan inte hitta modul


Jag försöker använda LernaJS med TypeScript och jag har några problem. När jag försöker köra mitt paket-1 som har paket-2 som beroende får jag felet:

    module.js:549
        throw err;
        ^
    
    Error: Cannot find module 'package-2'
        at Function.Module._resolveFilename (module.js:547:15)
        at Function.Module._load (module.js:474:25)
        at Module.require (module.js:596:17)
        at require (internal/module.js:11:18)
        at Object. (/home/gabriel/Documentos/projetos/nodejs/lerna-t2/packages/package-1/dist/index.js:3:19)
        at Module._compile (module.js:652:30)
        at Object.Module._extensions..js (module.js:663:10)
        at Module.load (module.js:565:32)
        at tryModuleLoad (module.js:505:12)
        at Function.Module._load (module.js:497:3)

Jag har följt följande steg:

  1. Jag har skapat en katalog och körde kommandot 'lerna init'
  2. Jag har skapat 2 mappar inne i (package-1, package-2) 'packages'-mappen
    .
    ├── lerna.json
    ├── node_modules
    ├── package.json
    ├── package-lock.json
    └── packages
        ├── package-1
        └── package-2
  1. Jag har kört 'npm init' i båda (package-1, package-2)
  2. Jag har skapat en grundläggande 'tsconfig.json' i båda paketen:
    {
        "compilerOptions": {
            "outDir": "dist",
            "target": "es5",
            "module": "commonjs"
        }
    }
  1. Jag har kört 'lerna bootstrap' i rotmappen
  2. Jag har använt 'lerna add package-2 --scope=package-1'
  3. Jag har också kört 'npm i' i rotmappen, package-1 och package-2
  4. Jag har kört 'tsc -w' i package-1 och package-2 och 'node dist/index.js' i package-1

FILTRÄD

Min 'package-1' filstruktur:


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

Min 'package-2'-filstruktur:


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

KOD

paket-1:

  • index.ts:

    import { Teste } from 'package-2'
    
    new Teste().printHello()

paket-2:

  • lib/teste.ts:

    export class Teste {
    
        printHello() {
            console.log('Hello!')
        }
    
    }

  • index.ts:

    export { Teste } from './lib/teste'

Svar #1

Se till att du har definierat main i din package.json i (åtminstone project-2). Jag antar att fältet name i package.json (för project-2) är project-2.

Main ska länka till dist/index.js

Relaterade artiklar