webpack 「有/没有 配置文件webpack.config.js」的问题

一、项目介绍

项目目录

builds // 打包文件存放文件夹
src // 项目组件文件夹
  component
    app.js
    main.js
  index.html
package.json // 配置文件
webpack.config.js // 配置文件

index.html

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>webpack</title>
</head>  
<body>
  <div id="root"></div>
  <script type="text/javascript" src="../builds/index.js"></script>
</body>
</html>

app.js

module.exports = function() {
  var greet = document.createElement('div');
  greet.textContent = "welcome to use webpack!";
  return greet;
}

main.js

const greeter = require('./app.js');
document.querySelector("#root").appendChild(greeter());

package.json

{
  "name": "cbc",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1",
    "start": "webpack"
  },
  "author": "",
  "license": "ISC",
  "devDependencies": {
    "webpack": "^4.39.3",
    "webpack-cli": "^3.3.8"
  }
}

webpack.config.js

module.exports = {
  mode: "development",
  entry: __dirname + "/src/component/main.js",
  output: {
    filename: "index.js",
    path: __dirname + "/builds"
  }
}

运行命令npm start是可以打包的,并且打包如下:

image.png

二、有配置文件webpack.config.js,遇到的问题

在开发过程中往往都需要修改配置文件,在修改webpack.config.js的入口(entry)和出口(output)时有时候会将路径填写错误,导致打包出现错误。
下面就举一个例子:
我将上面项目的webpack.config.js文件中的入口(entry)和出口(output)路径修改如下:

module.exports = {
  mode: "development",
  entry: __dirname + "./src/component/main.js",
  output: {
    filename: "index.js",
    path: __dirname + "./builds"
  }
}

然后运行npm start进行打包,就出现了以下报错:

image.png

1、第一条的红色字体是cli报的错,意思是参数数量不足或没有找到入口(entry)。

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

参数数量不足或没有找到入口。
或者,运行“webpack(-cli)——help”获取使用信息。

2、第二条的红色字体是入口(Entry)路径没有找到。

ERROR in Entry module not found: Error: Can't resolve '/Users/wb-cbc503422/Desktop/cbc./src/component/main.js' in '/Users/wb-cbc503422/Desktop/cbc'

进入模块错误未找到:错误:无法解决'/Users/wb-cbc503422/Desktop/cbc./src/component/main。js '在' /用户/ wb-cbc503422 /桌面/ cbc '
解决问题

其实这两个错误信息表示的是一个意思,那就是入口路径没有找到。因为我修改了入口(entry)和出口(output)的路径。
这里有一个__dirname,这是什么意思呢?,我想大家都知道,如果不知道可以去百度一下。我这里只是简单的说一下,这个总是指向被执行 js 文件的绝对路径
要想知道正确的路径,首先得知道我修改的路径错在了哪里,然后才能根据项目目录找到正确的路径。那怎样才能知道我修改的路径错在了哪里。非常简单,打印一下不是就是知道了。但是这个是配置文件,不能按照普通js文件一样打印,需要用node打印。
修改webpack.config.js配置文件如下:

console.log('打印1:', __dirname);
console.log('打印2:', __dirname + "./src/component/main.js");

module.exports = {
  mode: "development",
  entry: __dirname + "./src/component/main.js",
  output: {
    filename: "index.js",
    path: __dirname + "./builds"
  }
}

然后在终端运行node命令node webpack.config.js,得出的结果如下:

打印1: /Users/wb-cbc503422/Desktop/cbc
打印2: /Users/wb-cbc503422/Desktop/cbc./src/component/main.js

通过打印结果发现:“入口路径就是一个错误路径”,同样的方式打印对比出口文件也是不对的。
重新修改配置文件如下:

module.exports = {
  mode: "development",
  entry: __dirname + "/src/component/main.js",
  output: {
    filename: "index.js",
    path: __dirname + "/builds"
  }
}

但是我在学习webpack的时候有看到如下两行代码:

const path = require('path');
path: path.resolve(__dirname, "dist"), // string

pathNode中文网找到了解释,以及它的方法path.resolve()
为了不让我代码看起来太low,所以我决定将path运用到配置文件中。
再次修改配置文件如下:

const path = require('path');
module.exports = {
  mode: "development",
  entry: path.resolve(__dirname, "src/component/main.js"),
  output: {
    filename: "index.js",
    path: path.resolve(__dirname, "builds")
  }
}

然后运行npm start打包成功了。

image.png

三、没有配置文件webpack.config.js,遇到的问题

接着上面的项目,将配置文件webpack.config.js删除。

builds // 打包文件存放文件夹
src // 项目组件文件夹
  component
    app.js
    main.js
  index.html
package.json // 配置文件

运行npm start就出现了如下问题:

image.png

1、第一条的红色字体是cli报的错,意思是参数数量不足或没有找到入口(entry)。

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

参数数量不足或没有找到入口。或者,运行“webpack(-cli)——help”获取使用信息。

2、第二条的黄色字体意思是在webpack配置中mode模式没有指定是development还是production

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/configuration/mode/

警告在配置
“模式”选项尚未设置,webpack将返回到“生产”值。将“mode”选项设置为“development”或“production”,以便为每个环境启用默认值。
您还可以将它设置为“none”来禁用任何默认行为。了解更多信息:https://webpack.js.org/configuration/mode/

3、第三条的红色字体是Entry路径没有找到。

ERROR in Entry module not found: Error: Can't resolve './src' in '/Users/wb-cbc503422/Desktop/cbc'

进入模块错误未找到:错误:无法解决'。/ src”在“/用户/ wb-cbc503422 /桌面/ cbc的
解决问题

其实第一条错误信息、第三条错误信息和上文讲的是一样的,都是没有找到入口(entry)。这样我们可以将此次报错总结为两点,第一点是入口路径没找到,第二点是一个警告,没有指定mode。
1、第一个问题(没有找到entry)
通过在webpack官网查找,在webpack官网的API=>命令行界面配置=>组态中找到了解决办法。
修改package.json配置文件,修改文件如下:

{
  ...
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1",
    "start": "webpack src/component/main.js -o builds/index.js"
  },
  ...
}

src/component/main.js: 指定入口文件路径
builds/index.js: 指定出口文件路径

修改好之后呢运行npm start得到结果如下:

image.png

现在打包成功了,但是mode还是没有指定,所以还会有警告。
2、第二个问题
其实在cli配置中就有提到了这个配置项,只需要将package.json配置文件,修改如下:

{
  ...
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1",
    "start": "webpack --mode development src/component/main.js -o builds/index.js"
  },
  ...
}

--mode development:指定是生产模式还是开发模式

然后我继续运行npm start的打包结果:

image.png

本章就总结到这了。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,277评论 6 503
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,689评论 3 393
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 163,624评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,356评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,402评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,292评论 1 301
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,135评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,992评论 0 275
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,429评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,636评论 3 334
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,785评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,492评论 5 345
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,092评论 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,723评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,858评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,891评论 2 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,713评论 2 354

推荐阅读更多精彩内容

  • 【手写爱情绘本4.0】甘心情愿爱着你,深情如许唯君知。真正长久和踏实的感情是这样一种感觉,仿佛两人从天老地荒就在一...
    主播亚东阅读 688评论 7 4
  • 我最爱的人, 在第三行, 你。 我等的人始终不来, 黄昏急着要走, 天黑了,我什么都看不见。 我趴着写,我躺着写,...
    伦小让阅读 872评论 2 3
  • 作业时间:11月18日下午9点-11点 单词拆分数量:20个 单词拆分方法:分拆变换+字母代码+谐音+联想 (34...
    AFL李政阅读 322评论 0 1
  • 海口致然斋书画院笔会 2017年7月16日(星期曰)上午在海口市博爱北路第一市场对面《海天之韵珠宝...
    孔庆光阅读 263评论 0 0
  • 实体类的编写规则 实体类中属性私有 私有属性使用公有的set get方法进行操作 要求属性中有一个值都是唯一的 实...
    vinllor阅读 275评论 0 0