#javascript #node.js #webpack
#javascript #node.js #веб-пакет
Вопрос:
Я столкнулся с проблемой сборки в большом проекте, которую я могу воспроизвести в чрезвычайно упрощенном примере:
Учитывая базовый проект webpack (с начала работы):
[webpack]: ls
node_modules package.json
package-lock.json src
[webpack]: ls src
index.js
Если я попытаюсь импортировать пакет, в котором есть «модуль», указанный в package.json (для которого я не могу найти ссылку в https://docs.npmjs.com/cli/v6/configuring-npm/package-json ), как @szhsin/реагировать-меню (https://github.com/szhsin/react-menu/blob/master/package.json#L9-L10 ), затем Webpack пытается импортировать это вместо «основного» скрипта!
Пример
// src/index.js
import '@szhsin/react-menu'
[webpack]: npx webpack
[webpack-cli] Compilation finished
assets by status 33.4 KiB [cached] 1 asset
orphan modules 42.2 KiB [orphan] 1 module
./src/index.js 1 modules 42.2 KiB [built] [code generated]
ERROR in ./node_modules/@szhsin/react-menu/dist/index.modern.js 1:0-122
Module not found: Error: Can't resolve 'react' in '/Users/delong/dev/webpack/node_modules/@szhsin/react-menu/dist'
@ ./src/index.js 1:0-27
Примечание: он пытается импортировать dist/index.modern.js
, а не dist/index.js
!
Как мне нужно настроить Webpack, чтобы по умолчанию импортировать «основной» скрипт?
Ответ №1:
Просто используйте полный путь:
import '@szhsin/react-menu/dist/index.js'
Комментарии:
1. Это интересное решение. Простой, понятный. Теперь мне остается любопытно, каковы недостатки (кроме ввода большего количества символов).
2. Это нарушит вашу сборку, как только они изменят путь
dist/index.js
.