web-dev-qa-db-ja.com

LernaJS TypeScriptがモジュールを見つけられない

TypeScriptでLernaJSを使用しようとしていますが、いくつか問題があります。パッケージ1を実行しようとすると、依存関係としてパッケージ2があり、エラーが発生します。

 
 module.js:549 
 throw err; 
 ^ 
 
エラー:モジュール '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)
 

私は次のステップに従いました:

  1. ディレクトリを作成し、「lerna init」コマンドを実行しました
  2. (package-1、package-2) 'packages'フォルダー内に2つのフォルダーを作成しました
 
。
├──lerna.json 
├──node_modules 
├──package.json 
├── package-lock.json 
└──packages 
├──package-1 
└──package-2 
 
  1. 両方で「npm init」を実行しました(パッケージ1、パッケージ2)
  2. 両方のパッケージで基本的な「tsconfig.json」を作成しました。
 
 {
 "compilerOptions":{
 "outDir": "dist"、
 "target": "es5"、
 "モジュール": "commonjs" 
} 
} 
 
  1. ルートフォルダーで「lernaブートストラップ」を実行しました
  2. 「lerna add package-2 --scope = package-1」を使用しました
  3. ルートフォルダー、package-1、package-2で「npm i」も実行しました
  4. 私はpackage-1とpackage-2で「tsc -w」を実行し、package-1で「node dist/index.js」を実行しました

ファイルツリー

私の「package-1」ファイルツリー:

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

私の「パッケージ2」ファイルツリー:

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

[〜#〜]コード[〜#〜]

パッケージ-1

  • index.ts:
 
 import {Teste} from 'package-2' 
 
 new Teste()。printHello()
 

パッケージ2

  • lib/teste.ts:
 
エクスポートクラスTeste {
 
 printHello(){
 console.log( 'Hello!')
} 
 
} 
 
  • index.ts:
 
 './lib/teste'から{Teste}をエクスポートします
 
12
J G

(少なくともproject-2)のpackage.jsonにmainが定義されていることを確認してください。 package.json(project-2の場合)の名前フィールドはproject-2であると想定しています。

メインはdist/index.jsにリンクする必要があります

7
lajtmaN