Модуль не найден при импорте вложенного модуля - PullRequest
0 голосов
/ 08 мая 2019

Предположим, что у нас есть package1 и package2. Если package2 пытается импортировать модуль package1, мы получаем сообщение об ошибке module not found. Импорт выглядит как import { ... } from 'package1/styles'. Имейте в виду, что импорт как import { ... } from 'package1' работает. На мой взгляд, эти проблемы с импортом вызваны тем, что lerna неправильно связывает папки. Я ожидал бы, что node_modules из package2 должен содержать только 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

1 Ответ

0 голосов
/ 09 мая 2019

tsconfig.json должен иметь пути, которые разрешают зависимости модуля, такие как:

...
    "baseUrl": "./packages",
    "paths": {
      "package1": ["./package1/src"],
      "package1/*": ["./package1/src/*"]
    }
...

...