LernaJS 打字稿找不到模块
LernaJS Typescript cannot find module
我正在尝试将 LernaJS 与打字稿一起使用,但遇到了一些问题。当我尝试 运行 以 package-2 作为依赖项的 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)
我已按照以下步骤操作:
- 我已经创建了一个目录和 运行 命令 'lerna init'
- 我在里面创建了 2 个文件夹 (package-1, package-2) 'packages' 文件夹
.
├── lerna.json
├── node_modules
├── package.json
├── package-lock.json
└── packages
├── package-1
└── package-2
- 我 运行 'npm init' 在两个(package-1,package-2)
- 我已经在两个包中创建了一个基本的 'tsconfig.json':
{
"compilerOptions": {
"outDir": "dist",
"target": "es5",
"module": "commonjs"
}
}
- 我在根文件夹运行 'lerna bootstrap'
- 我用过'lerna add package-2 --scope=package-1'
- 我在根文件夹 package-1 和 package-2 中也 运行 'npm i'
- 我在 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
我的'package-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()
package-2:
- lib/teste.ts:
export class Teste {
printHello() {
console.log('Hello!')
}
}
- index.ts:
export { Teste } from './lib/teste'
请确保您已经在 package.json 中定义了 main
(至少是 project-2)。我假设 package.json(对于项目 2)中的名称字段是 project-2
。
主要应该link到dist/index.js
我正在尝试将 LernaJS 与打字稿一起使用,但遇到了一些问题。当我尝试 运行 以 package-2 作为依赖项的 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)
我已按照以下步骤操作:
- 我已经创建了一个目录和 运行 命令 'lerna init'
- 我在里面创建了 2 个文件夹 (package-1, package-2) 'packages' 文件夹
. ├── lerna.json ├── node_modules ├── package.json ├── package-lock.json └── packages ├── package-1 └── package-2
- 我 运行 'npm init' 在两个(package-1,package-2)
- 我已经在两个包中创建了一个基本的 'tsconfig.json':
{ "compilerOptions": { "outDir": "dist", "target": "es5", "module": "commonjs" } }
- 我在根文件夹运行 'lerna bootstrap'
- 我用过'lerna add package-2 --scope=package-1'
- 我在根文件夹 package-1 和 package-2 中也 运行 'npm i'
- 我在 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
我的'package-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()
package-2:
- lib/teste.ts:
export class Teste { printHello() { console.log('Hello!') } }
- index.ts:
export { Teste } from './lib/teste'
请确保您已经在 package.json 中定义了 main
(至少是 project-2)。我假设 package.json(对于项目 2)中的名称字段是 project-2
。
主要应该link到dist/index.js