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:
- Jag har skapat en katalog och körde kommandot 'lerna init'
- 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
- Jag har kört 'npm init' i båda (package-1, package-2)
- Jag har skapat en grundläggande 'tsconfig.json' i båda paketen:
{
"compilerOptions": {
"outDir": "dist",
"target": "es5",
"module": "commonjs"
}
}
- Jag har kört 'lerna bootstrap' i rotmappen
- Jag har använt 'lerna add package-2 --scope=package-1'
- Jag har också kört 'npm i' i rotmappen, package-1 och package-2
- 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