当前位置: 首页 > 知识库问答 >
问题:

通过网页包导入节点模块时出错,“您可能需要适当的加载程序来处理此文件类型”

翟冷勋
2023-03-14

我试图构建一个扩展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预设。我可以通过使用类似于的东西导入其他节点模块,如loadash/get;导入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预设,因此我似乎有正确的网页设置。但也许我错过了什么?

共有1个答案

别宏盛
2023-03-14

我设法让它工作起来了。原来我的webpack.config.js文件从babel加载程序定义中排除了node_模块,因此webpack将尝试解析放置在/node_模块中的quill文件,但无法解析它们,因为它们被排除在babel加载程序之外。

通过将异常添加到我的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)
            }
        },
 类似资料: