LernaJS Typescript找不到模块

时间:2018-06-10 02:36:21

标签: node.js typescript lerna

我正在尝试使用LernaJS打字稿,但我遇到了一些问题。当我尝试运行我的package-1时,我将得到错误:


    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)

我已按照以下步骤操作:

  1. 我创建了一个目录并运行了'lerna init'命令
  2. 我在(package-1,package-2)'packages'文件夹
  3. 中创建了2个文件夹
    
        .
        ├── lerna.json
        ├── node_modules
        ├── package.json
        ├── package-lock.json
        └── packages
            ├── package-1
            └── package-2
    
    
    1. 我在两个(package-1,package-2)
    2. 中都运行了'npm init'
    3. 我在两个软件包中都创建了一个基本的'tsconfig.json':
    4. 
          {
              "compilerOptions": {
                  "outDir": "dist",
                  "target": "es5",
                  "module": "commonjs"
              }
          }
      
      
      1. 我在根文件夹
      2. 中运行了'lerna bootstrap'
      3. 我使用'lerna add package-2 --scope = package-1'
      4. 我在根文件夹,package-1和package-2
      5. 中也运行了'npm i'
      6. 我在package-1和package-2中运行'tsc -w',在package-1中运行'node dist / index.js
      7. 文件树

        我的'package-1'文件树:

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

        我的'package-2'文件树:

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

        CODE

        包-1

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

        包-2

        • LIB / teste.ts:
        
            export class Teste {
        
                printHello() {
                    console.log('Hello!')
                }
        
            }
        
        
        • index.ts:
        
            export { Teste } from './lib/teste'
        
        

1 个答案:

答案 0 :(得分:5)

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

主要应链接到dist/index.js