21

我正在尝试将 LernaJS 与打字稿一起使用,但我遇到了一些问题。当我尝试运行具有 package-2 作为依赖项的 package-1 时,出现错误:

    模块.js:549
        抛出错误;
        ^
    
    错误:找不到模块“package-2”
        在 Function.Module._resolveFilename (module.js:547:15)
        在 Function.Module._load (module.js:474:25)
        在 Module.require (module.js:596:17)
        在要求(内部/module.js:11:18)
        在对象。(/home/gabriel/Documentos/projetos/nodejs/lerna-t2/packages/package-1/dist/index.js:3:19)
        在 Module._compile (module.js:652:30)
        在 Object.Module._extensions..js (module.js:663:10)
        在 Module.load (module.js:565:32)
        在 tryModuleLoad (module.js:505:12)
        在 Function.Module._load (module.js:497:3)

我已按照以下步骤操作:

  1. 我创建了一个目录并运行了命令“lerna init”
  2. 我在 (package-1, package-2) 'packages' 文件夹中创建了 2 个文件夹
    .
    ├── lerna.json
    ├── 节点模块
    ├── package.json
    ├── package-lock.json
    └── 包裹
        ├── package-1
        └── package-2
  1. 我在两个(package-1,package-2)中都运行了“npm init”
  2. 我在两个包中都创建了一个基本的“tsconfig.json”:
    {
        “编译器选项”:{
            "outDir": "dist",
            “目标”:“es5”,
            “模块”:“commonjs”
        }
    }
  1. 我在根文件夹中运行了“lerna bootstrap”
  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”文件树:

    .
    ├── 距离
    │ └── index.js
    ├── index.ts
    ├── 节点模块
    │ ├── package-2 -> ../../package-2
    │ └── 打字稿
    ├── package.json
    ├── package-lock.json
    └── tsconfig.json

我的“package-2”文件树:

    .
    ├── 距离
    │ ├── index.js
    │ └── 库
    │ └── teste.js
    ├── index.ts
    ├── 库
    │ └── teste.ts
    ├── package.json
    ├── package-lock.json
    └── tsconfig.json

代码

包 1

  • 索引.ts:
    从 'package-2' 导入 { Teste }
    
    新的 Teste().printHello()

包 2

  • 库/teste.ts:
    出口类Teste {
    
        打印你好(){
            console.log('你好!')
        }
    
    }

  • 索引.ts:
    从 './lib/teste' 导出 { Teste }

4

1 回答 1

23

请确保您已main在 package.json 中定义(至少 project-2)。我假设 package.json 中的 name 字段(对于 project-2)是project-2.

主要应该链接到dist/index.js

于 2018-06-12T05:33:19.860 回答