node.js - 导入嵌套模块时找不到模块
问题描述
假设我们有package1
和package2
。如果package2
尝试导入package1
模块,我们会收到一条错误消息module not found
。导入看起来像import { ... } from 'package1/styles'
. 请记住,导入喜欢import { ... } from 'package1'
工作。在我看来,这些导入问题是由于 lerna 错误地链接文件夹引起的。我希望node_modules
ofpackage2
应该只包含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/*"]
}
...
推荐阅读
- c# - WPF 应用程序使用 AAD 访问 Azure 函数
- node.js - 将基于 MongoDB 和 Express 的后端 API 部署到 Heroku 不起作用
- python - 重复 Dialogflow Intent 直到满足条件
- c# - 如何浏览网页(输入、选择、按钮提交)
- ios - Appetize.io 应用演示不显示图像资产
- sorting - table.sort 抛出“无效的订单功能”
- hyperledger-fabric - Fabric CA 中的 hf.Registrar.Roles 和 hf.Registrar.DelegateRoles 有什么区别?
- python - tf.print 没有结果
- java - 如果没有添加数据,如何避免在备份树的过程中更新高度/平衡因子?
- python - 如何获取 Django 相关模型行并作为字典列表返回?