LernaJS Typescript找不到模块

J G*_*J G 8 node.js typescript lerna

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

    module.js:549
        犯错
        ^

    错误:找不到模块“ package-2”
        在Function.Module._resolveFilename(module.js:547:15)
        在Function.Module._load(module.js:474:25)
        在Module.require(module.js:596:17)
        在要求时(internal / 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
    ??? node_modules
    ??? package.json
    ??? package-lock.json
    ??? 包装
        ??? 包装1
        ??? 套餐2

  1. 我都在(package-1,package-2)中都运行了'npm init'
  2. 我在两个软件包中都创建了一个基本的“ tsconfig.json”:
    {
        “ compilerOptions”:{
            “ outDir”:“ dist”,
            “ target”:“ es5”,
            “ module”:“ commonjs”
        }
    }

  1. 我已经在根文件夹中运行了“ lerna bootstrap”
  2. 我用过'lerna add package-2 --scope = package-1'
  3. 我还在根文件夹,程序包1和程序包2中运行了'npm i'
  4. 我已经在package-1和package-2中运行了'tsc -w',并且在package-1中运行了'node dist / index.js'

文件树

我的“ package-1”文件树:

    。
    ??? dist
    ???? index.js
    ??? 索引
    ??? node_modules
    ???? package-2-> ../../package-2
    ???? 打字稿
    ??? package.json
    ??? package-lock.json
    ??? tsconfig.json

我的“ package-2”文件树:

    。
    ??? dist
    ???? index.js
    ???? LIB
    ???? teste.js
    ??? 索引
    ??? LIB
    ???? 证词
    ??? package.json
    ??? package-lock.json
    ??? tsconfig.json

套餐1

  • index.ts:
    从'package-2'导入{Teste}

    新的Teste()。printHello()

套餐2

  • lib / teste.ts:
    出口类别Teste {

        printHello(){
            console.log('你好!')
        }

    }

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

laj*_*maN 7

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

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

  • @Gegenwind 这就是 Lerna 将项目链接在一起的方式。当您从 Lerna 存储库导入另一个项目时,您实际上只是导入 package.json 中 `main` 中定义的任何内容。AFAIK 无法直接链接到您的 index.ts 文件,因为编译器希望导入的文件已经被编译。这就是为什么您应该使用已编译的 javascript 文件(通常位于名为 dist 或 build 的文件夹中)的原因。 (3认同)