Ошибка импорта модуля узла через Webpack. Вам может понадобиться соответствующий загрузчик для обработки этого типа файла.

Я пытаюсь создать модуль, расширяющий редактор Quill, и интегрировать его в свой проект.

Когда я пытаюсь импортировать определенные модули Quill в свой собственный модуль Quill, webpack выдает ошибку:

Uncaught Error: Cannot find module "quill/core/quill"
    at webpackMissingModule (QuillLinkTooltip.js:15)
    at eval (QuillLinkTooltip.js:15)

а затем позже:

./~/quill/core/quill.js
Module parse failed: /Users/path_to_my_app_folder/node_modules/quill/core/quill.js Line 1: Unexpected token
You may need an appropriate loader to handle this file type.
| import './polyfill';
| import Delta from 'quill-delta';
| import Editor from './editor';

Вот выдержка из пользовательского модуля Quill (QuillLinkTooltip.js), который я создаю и который выдает ошибки:

import Quill from 'quill/core/quill';
import { Range } from 'quill/core/selection';
import Keyboard from 'quill/modules/keyboard';
import LinkBlot from 'quill/formats/link';
import Tooltip from 'quill/ui/tooltip';

Я использую предустановки Webpack, babel и babel es2015 в своем проекте. Я могу импортировать другие модули узлов, такие как lodash, используя что-то вроде import get from 'lodash/get';.

Я подозреваю, что webpack может найти модуль, но испытывает трудности с его разбором. Вот выдержка из моего файла webpack.config.js:

module: {
    loaders: [
        {
            test: /.*\.js$/,
            loader: 'babel-loader',
            exclude: [ /node_modules/, /frontend/ ],
            query: {
                presets: [ 'babel-preset-es2015' ].map(require.resolve),
                plugins: [ 'babel-plugin-add-module-exports' ].map(require.resolve)
            }
        },

Я прочитал https://quilljs.com/guides/adding-quill-to-your-build-pipeline/, в котором упоминается, что необходимы предустановки Webback, Babel и Babel ES2015, поэтому, похоже, у меня есть правильная настройка веб-пакета. Но может я что-то упускаю?


person Squrler    schedule 10.12.2016    source источник


Ответы (1)


Удалось заставить это работать. Оказалось, что мой файл webpack.config.js исключал node_modules из определения babel-loader, поэтому Webpack пытался разрешить файлы quill, помещенные в /node_modules, но не смог их проанализировать, поскольку они были исключены из babel-loader. .

Исправил это, добавив исключение в мой оператор exclude:

module: {
    loaders: [
        {
            test: /.*\.js$/,
            loader: 'babel-loader',
            exclude: [ /node_modules(?!\/quill)/, /frontend/ ],
            query: {
                presets: [ 'babel-preset-es2015' ].map(require.resolve),
                plugins: [ 'babel-plugin-add-module-exports' ].map(require.resolve)
            }
        },
person Squrler    schedule 12.12.2016