Webpack 4 : ERROR in Entry module not found: Error: Can't resolve './src'
Webpack 4 : ERROR in Entry module not found: Error: Can't resolve './src'
我第一次尝试 运行 webpack-4
webpack ./src/js/app.js ./dist/app.bundle.js
显示警告/错误:
WARNING in configuration
The 'mode' option has not been set, webpack will fallback to 'production' for this value. Set 'mode' option to 'development' or 'production' to enable defaults for each environment.
You can also set it to 'none' to disable any default behavior. Learn more: https://webpack.js.org/concepts/mode/
ERROR in multi ./src/js/app.js ./dist/app.bundle.js
Module not found: Error: Can't resolve './dist/app.bundle.js' in 'D:\wamp64\www\webpack-4'
@ multi ./src/js/app.js ./dist/app.bundle.js
然后我尝试改变模式
webpack --mode development
显示:
ERROR in Entry module not found: Error: Can't resolve './src'
已解决
花了很多时间才找到解决办法。
解决方法:将index.js
文件添加到src
文件夹中。
就是这样!..解决了:)
在研究期间,我发现了一些关于 webpack 4 的事实:
webpack 4 默认不需要配置文件!
webpack 4 无需定义入口点: 默认为./src/index.js
!
webpack ./src/js/app.js --output ./dist/app.bundle.js --mode development
这对我有用。我也遇到了同样的问题,是因为新版本的webpack
在 now.sh
上部署时遇到此问题
解决方案:使用默认行为
将入口点移动到 src/index.js
。
这个杠杆webpack@4
default value for entry
:
By default its value is ./src/index.js
, but you can specify a
different (or multiple entry points) by configuring the entry property
in the webpack configuration.
解决方案:具体
正如@Lokeh 指出的那样,如果您不想更改 JS 文件位置,您可以随时在 webpack.config.js
:
中使用 path.resolve()
entry: path.resolve(__dirname, 'src') + '/path/to/your/file.js',
从 webpack ^4.29.6 开始,您不需要任何配置文件,因此无需在 package.json 中提供路径,我们只需编写 "build": "webpack" 并保留 index.js 作为 src 文件夹中的入口点。但是,如果你想更改入口点,你可以在 webpack 配置文件中这样做
在 webpack.config.js 中明确添加上下文已解决我的问题。在您的项目中修改以下代码:
context: __dirname + '/src',
entry: './index.js',
对于 Rails 6 个应用程序,此步骤对我有效:
1) bundle exec rails webpacker:install
系统将重新安装 webpacker,但会重写一些文件:
modified: config/webpack/environment.js
modified: config/webpacker.yml
modified: package.json
modified: yarn.lock
2) Return 配置到初始状态:
git checkout config/webpack/environment.js
git checkout config/webpacker.yml
package.json
和 yarn.lock
你可以保持原样离开
和其他人一样花了很多时间来解决这个烦人的问题。最后改webpack.config.js
如下:-
output: {
path: path.resolve(__dirname, './src'), //src instead of dist
publicPath: '/src/', //src instead of dist
filename: 'main.js' //main.js instead of build.js
}
...正如 Edouard Lopez 和 Sabir Hussain 提到的,您不需要提及入口点,也删除了入口点,并且在长期受挫后编译了应用程序。
所以我的问题,我敢打赌,很多人的问题是我根据我的整个应用程序根目录设置了入口路径。所以在我的例子中,它是 /client/main.ts。但是因为我的 webpack.config.js 文件实际上在 /client 里面,所以我不得不移动到那个文件夹到 运行 webpack。因此我的条目现在正在寻找 /client/client/main.ts.
因此,如果您遇到此错误,您需要真正查看您的入口路径,并根据您 运行 正在使用 webpack 的位置以及您的 webpack.config.js 文件所在的位置来确保它是正确的。您的入口路径需要相对于您所在的位置 运行ning webpack。与您的应用根目录无关。
我有一个类似的错误,并且能够使用命令 webpack src/index.js -o dist/bundle.js
解决它,-o
成功了。问题不是 index.js 的位置,而是缺少用于定义输出路径位置的运算符。
见https://webpack.js.org/api/cli/
webpack 版本为 4.44.1
我在 changing between React/Rails gems 时遇到了这个问题。 运行 rails webpacker:install
将我恢复到 Rails webpacker 默认值,但也覆盖了我所有的配置文件。经过仔细检查,罪魁祸首原来是我的 webpack/development.js
文件,在以前的 gem 版本中,该文件已从 Rails webpacker 默认值修改:
process.env.NODE_ENV = process.env.NODE_ENV || 'development'
const environment = require('./environment')
module.exports = environment.toWebpackConfig()
一旦我将文件恢复为那些内容,这个错误就消失了。具体来说,我错过了 module.exports = environment.toWebpackConfig()
行,这对于那些想要避免 Rails webpacker 认为它需要 src/index.js 文件(它不需要)的人来说显然非常重要
webpack version 4.46.0
也许有人在从 webpack 4 迁移到 5 的过程中卡住了。
如果有多个 webpack 配置文件并且有人使用 merge
:
说 webpack.common.js
依赖于从 cli
传递的一些 variables
例如:
module.export = (env) => {
const {myCustomVar} = env;
return {
// some common webpack config that uses myCustomVar
}
}
当你需要通用配置时 webpack.prod.js
:
const { merge } = require('webpack-merge'); // <-- `merge` is now named import if you are using > v5
const common = require('./webpack.common.js');
const getProdConfig = () => {....}
module.exports = (env) => {
return merge(common(env), getProdConfig()); // <-- here, `call` common as its exported as a fn()
};
就把它留在这里,以防有人像我一样不注意细节,我有同样的错误,但是因为我的 webpack 配置文件被命名为 webpack.config 而不是 webpack.config.js ,所以我的自定义配置从未被选中,webpack 回落到默认条目“src/index.js”
我第一次尝试 运行 webpack-4
webpack ./src/js/app.js ./dist/app.bundle.js
显示警告/错误:
WARNING in configuration
The 'mode' option has not been set, webpack will fallback to 'production' for this value. Set 'mode' option to 'development' or 'production' to enable defaults for each environment.
You can also set it to 'none' to disable any default behavior. Learn more: https://webpack.js.org/concepts/mode/
ERROR in multi ./src/js/app.js ./dist/app.bundle.js
Module not found: Error: Can't resolve './dist/app.bundle.js' in 'D:\wamp64\www\webpack-4'
@ multi ./src/js/app.js ./dist/app.bundle.js
然后我尝试改变模式
webpack --mode development
显示:
ERROR in Entry module not found: Error: Can't resolve './src'
已解决
花了很多时间才找到解决办法。
解决方法:将index.js
文件添加到src
文件夹中。
就是这样!..解决了:)
在研究期间,我发现了一些关于 webpack 4 的事实:
webpack 4 默认不需要配置文件!
webpack 4 无需定义入口点: 默认为./src/index.js
!
webpack ./src/js/app.js --output ./dist/app.bundle.js --mode development
这对我有用。我也遇到了同样的问题,是因为新版本的webpack
在 now.sh
上部署时遇到此问题解决方案:使用默认行为
将入口点移动到 src/index.js
。
这个杠杆webpack@4
default value for entry
:
By default its value is
./src/index.js
, but you can specify a different (or multiple entry points) by configuring the entry property in the webpack configuration.
解决方案:具体
正如@Lokeh 指出的那样,如果您不想更改 JS 文件位置,您可以随时在 webpack.config.js
:
path.resolve()
entry: path.resolve(__dirname, 'src') + '/path/to/your/file.js',
从 webpack ^4.29.6 开始,您不需要任何配置文件,因此无需在 package.json 中提供路径,我们只需编写 "build": "webpack" 并保留 index.js 作为 src 文件夹中的入口点。但是,如果你想更改入口点,你可以在 webpack 配置文件中这样做
在 webpack.config.js 中明确添加上下文已解决我的问题。在您的项目中修改以下代码:
context: __dirname + '/src',
entry: './index.js',
对于 Rails 6 个应用程序,此步骤对我有效:
1) bundle exec rails webpacker:install
系统将重新安装 webpacker,但会重写一些文件:
modified: config/webpack/environment.js
modified: config/webpacker.yml
modified: package.json
modified: yarn.lock
2) Return 配置到初始状态:
git checkout config/webpack/environment.js
git checkout config/webpacker.yml
package.json
和 yarn.lock
你可以保持原样离开
和其他人一样花了很多时间来解决这个烦人的问题。最后改webpack.config.js
如下:-
output: {
path: path.resolve(__dirname, './src'), //src instead of dist
publicPath: '/src/', //src instead of dist
filename: 'main.js' //main.js instead of build.js
}
...正如 Edouard Lopez 和 Sabir Hussain 提到的,您不需要提及入口点,也删除了入口点,并且在长期受挫后编译了应用程序。
所以我的问题,我敢打赌,很多人的问题是我根据我的整个应用程序根目录设置了入口路径。所以在我的例子中,它是 /client/main.ts。但是因为我的 webpack.config.js 文件实际上在 /client 里面,所以我不得不移动到那个文件夹到 运行 webpack。因此我的条目现在正在寻找 /client/client/main.ts.
因此,如果您遇到此错误,您需要真正查看您的入口路径,并根据您 运行 正在使用 webpack 的位置以及您的 webpack.config.js 文件所在的位置来确保它是正确的。您的入口路径需要相对于您所在的位置 运行ning webpack。与您的应用根目录无关。
我有一个类似的错误,并且能够使用命令 webpack src/index.js -o dist/bundle.js
解决它,-o
成功了。问题不是 index.js 的位置,而是缺少用于定义输出路径位置的运算符。
见https://webpack.js.org/api/cli/
webpack 版本为 4.44.1
我在 changing between React/Rails gems 时遇到了这个问题。 运行 rails webpacker:install
将我恢复到 Rails webpacker 默认值,但也覆盖了我所有的配置文件。经过仔细检查,罪魁祸首原来是我的 webpack/development.js
文件,在以前的 gem 版本中,该文件已从 Rails webpacker 默认值修改:
process.env.NODE_ENV = process.env.NODE_ENV || 'development'
const environment = require('./environment')
module.exports = environment.toWebpackConfig()
一旦我将文件恢复为那些内容,这个错误就消失了。具体来说,我错过了 module.exports = environment.toWebpackConfig()
行,这对于那些想要避免 Rails webpacker 认为它需要 src/index.js 文件(它不需要)的人来说显然非常重要
webpack version 4.46.0
也许有人在从 webpack 4 迁移到 5 的过程中卡住了。
如果有多个 webpack 配置文件并且有人使用 merge
:
说 webpack.common.js
依赖于从 cli
传递的一些 variables
例如:
module.export = (env) => {
const {myCustomVar} = env;
return {
// some common webpack config that uses myCustomVar
}
}
当你需要通用配置时 webpack.prod.js
:
const { merge } = require('webpack-merge'); // <-- `merge` is now named import if you are using > v5
const common = require('./webpack.common.js');
const getProdConfig = () => {....}
module.exports = (env) => {
return merge(common(env), getProdConfig()); // <-- here, `call` common as its exported as a fn()
};
就把它留在这里,以防有人像我一样不注意细节,我有同样的错误,但是因为我的 webpack 配置文件被命名为 webpack.config 而不是 webpack.config.js ,所以我的自定义配置从未被选中,webpack 回落到默认条目“src/index.js”