【问题标题】:Webpack unable to find babel-loaderWebpack 找不到 babel-loader
【发布时间】:2020-02-14 09:33:09
【问题描述】:

我在为旧版应用程序添加响应时遇到了一些麻烦。虽然我在入门时找到了很多材料,但我遇到了一堆与我的特定配置相关的问题,并且由于我完全缺乏 webpack 知识而加剧了(依赖 react cli 工具的时间如此之多让人松懈)。

我的配置:

  • ./docs/jslib = 我的 node_modules,这是 yarn 安装模块的地方
  • ./docs/jscripts = 我的通用 js 文件夹,各种 js 脚本都放在那里
  • ./docs/jscripts/mini = 我的 dist 文件夹,有些东西是由 gulp 构建/打包的,并在此处结束。这是预计建成的东西去的地方
  • ./docs/jscripts/react(/react.js) = 我想要的 react 根目录,其中 react.js 是 DOM 选择和渲染的入口点(至少在第一次尝试时)。

我的 webpack 配置:

const path = require("path");

module.exports = {
    entry: "./docs/jscript/react/react.js",
    output: {
        path: path.resolve(__dirname, "./docs/jscript/mini"),
        filename: "react.js"
    },
    resolve: {
        extensions: [".js", ".jsx"],
        modules: [
            path.resolve(__dirname, "./docs/jslib")
        ],
        alias: {
            'babel-loader': path.resolve(__dirname, "./docs/jslib/babel-loader")
        }
    },
    module: {
        rules: [
            {
                test: /\.(js|jsx)$/,
                include: [
                    path.resolve(__dirname, "./docs/jscript/react")
                ],
                exclude: [
                    path.resolve(__dirname, "./docs/jslib")
                ],
                use: {
                    loader: "babel-loader"
                }
            }
        ]
    }
};

我在运行 webpack 时遇到的错误:

yarn run v1.21.1
$ ./docs/jslib/babel-loader/node_modules/.bin/webpack --mode production

Insufficient number of arguments or no entry found.
Alternatively, run 'webpack(-cli) --help' for usage info.

Hash: 210250af48f3cf84fa4a
Version: webpack 4.41.6
Time: 75ms
Built at: 02/14/2020 9:23:09 AM

ERROR in Entry module not found: Error: Can't resolve 'babel-loader' in '/var/www/html'

我有 webpack-cli,我可以直接运行 webpack,我可以从模块 bin 文件夹中运行它,都是一样的问题——即使 babel-loader 自带了自己的 webpack 脚本,它也找不到 babel-loader我使用,所以加载器显然在“node_modules”中,实际上在不同的路径上。

根据我收集到的信息,我所要做的就是将我的自定义 node_modules 路径添加到 resolve 设置下的 webpack 配置中,这解决了我与未找到的包相关的初始错误(但 webpack 仍然找不到加载器)。

注意:如果我将 ./docs/jslib 符号链接为 ./node_modules,它将按预期工作。

我有什么遗漏吗?

谢谢!

【问题讨论】:

  • 你试过重建node_modules目录吗?
  • @tmdesign 感谢您的建议,我做到了。但是,保存模块的目录在默认位置不是“node_modules”,而是具有不同的位置和名称。如果我在预期位置将其符号链接为 node_modules,一切都会按预期工作(但这不是一个可行的解决方案)。

标签: reactjs webpack babeljs


【解决方案1】:

经过一番挖掘,我找到了一个解决方案和一些其他人在相当非标准的上下文中配置 webpack 时可能想要记住的细节:

  • resolve:指向各种脚本中直接需要的模块
  • resolveLoader: 应该指向同一个,用于访问加载器(这是我需要的)

解决方案:

    resolveLoader: {
        extensions: ['.js', '.json', '.jsx'],
        modules: [
            path.resolve(__dirname, "./docs/jslib")
        ],
        mainFields: ['loader', 'main']
    }

【讨论】:

    猜你喜欢
    • 2022-09-29
    • 1970-01-01
    • 2015-07-27
    • 2016-10-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-02
    • 1970-01-01
    相关资源
    最近更新 更多