导入嵌套模块时找不到模块
Module not found while importing nested module
假设我们有 package1
和 package2
。如果 package2
尝试导入 package1
模块,我们会得到一个错误 module not found
。导入看起来像 import { ... } from 'package1/styles'
。请记住,像 import { ... } from 'package1'
这样的导入是有效的。在我看来,这些导入问题是因为 lerna 错误地链接了文件夹。我希望 package2
的 node_modules
应该只包含 package1/dist
而不是 package1
。这些导入问题应该如何解决?
以下相关 package1
个文件。
package.json:
...
"main": "./dist/index.js",
"files": ["dist"]
...
tsconfig.json:
{
"compilerOptions": {
"outDir": "./dist/",
"noImplicitAny": false,
"declaration": true,
"jsx": "react",
"allowJs": false,
"allowSyntheticDefaultImports": true,
"esModuleInterop": true,
"lib": ["esnext", "dom"]
},
"include": ["src/**/*"],
"exclude": ["node_modules", "**/*.spec.ts"]
}
在我们运行 lerna run build
之后我们得到以下目录结构:
packages/package2/node_modules/package1/
├── dist
│ ├── index.d.ts
│ ├── index.js
│ └── styles
│ ├── index.d.ts
│ └── index.js
├── node_modules
├── package-lock.json
├── package.json
├── src
│ ├── index.ts
│ └── styles
│ └── index.ts
├── tsconfig.json
└── webpack.config.js
tsconfig.json
应该有解决模块依赖关系的路径,例如:
...
"baseUrl": "./packages",
"paths": {
"package1": ["./package1/src"],
"package1/*": ["./package1/src/*"]
}
...
假设我们有 package1
和 package2
。如果 package2
尝试导入 package1
模块,我们会得到一个错误 module not found
。导入看起来像 import { ... } from 'package1/styles'
。请记住,像 import { ... } from 'package1'
这样的导入是有效的。在我看来,这些导入问题是因为 lerna 错误地链接了文件夹。我希望 package2
的 node_modules
应该只包含 package1/dist
而不是 package1
。这些导入问题应该如何解决?
以下相关 package1
个文件。
package.json:
...
"main": "./dist/index.js",
"files": ["dist"]
...
tsconfig.json:
{
"compilerOptions": {
"outDir": "./dist/",
"noImplicitAny": false,
"declaration": true,
"jsx": "react",
"allowJs": false,
"allowSyntheticDefaultImports": true,
"esModuleInterop": true,
"lib": ["esnext", "dom"]
},
"include": ["src/**/*"],
"exclude": ["node_modules", "**/*.spec.ts"]
}
在我们运行 lerna run build
之后我们得到以下目录结构:
packages/package2/node_modules/package1/
├── dist
│ ├── index.d.ts
│ ├── index.js
│ └── styles
│ ├── index.d.ts
│ └── index.js
├── node_modules
├── package-lock.json
├── package.json
├── src
│ ├── index.ts
│ └── styles
│ └── index.ts
├── tsconfig.json
└── webpack.config.js
tsconfig.json
应该有解决模块依赖关系的路径,例如:
...
"baseUrl": "./packages",
"paths": {
"package1": ["./package1/src"],
"package1/*": ["./package1/src/*"]
}
...