【发布时间】: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,一切都会按预期工作(但这不是一个可行的解决方案)。