webpacke踩坑-新手
常见错误: 1、babel-loader 找不到
基本自己遇到的是cnpm安装下,npm安装下就好了(网上有说是node版本问题?)
babel-loader依赖于babel-core
es6->es5还需要安装babel-preset-es2015 2、关于css方面的报错
1)、loader执行顺序由右往左,一般在写css和sass的loader时尽量这样写
{
test:/\.css$/,
loader: ExtractTextPlugin.extract('style-loader', 'css-loader')
},
{
test:/\.scss$/,
loader:ExtractTextPlugin.extract('style-loader', 'css-loader!sass-loader')
}
//一般这里的错误在test下面的loader被写成loaders方式,或者里面的引入loader写法错误
//运用ExtractTextPlugin方式独立导入不要忘记安装这个插件的loader还有在plugins中执行new ExtractTextPlugin("css/[name].css"), 3、引入全部图片的时候报错找不到loader等
下面这是可以执行的方法:
include: [path.resolve(__dirname, "src/image")],
开始的时候自己错误的写成了--->
include:'./src/image/' //这种方式时错误的 下面贴图片loader和字体loader的代码——>
// 图片 loader
{
test: /\.(jpe?g|png|gif|svg)$/i,
loader: 'url-loader',
query: {
limit: 10000,
name: '/image/[name].[ext]'
},
include: [path.resolve(__dirname, "src/image")],
},
// 字体loader
{
test: /\.(eot|woff|woff2|ttf|svg)$/,
loader: 'url-loader',
query: {
limit: 5000,
name: '/font/[name]-[hash:8].[ext]'
}
} 4、其他莫名其妙的错误
1)之前莫名其妙报错最后发现是写错代码了
module.exports
被自己错误的写成了
module.export 5、报以下错误,发现node_modules\node-sass\vendor 不存在 ERROR in ENOENT: no such file or directory, scandir 'E:\work\test\webpacktest\test3\node_modules\.3.11.1@node-sass\vendor'
@ ./src/css/style.scss 4:14-137 解决方法:
npm rebuild node-sass 就解决所有问题了【需要安装visual studio 2015,并 执行 npm config set msvs_version 2015】 每次执行编译前清空输出目录
CleanWebpackPlugin = require('clean-webpack-plugin') //需要安装插件 //在plugins中写,‘dist’为输出目录
new CleanWebpackPlugin(['dist'], {
root: '', // An absolute path for the root of webpack.config.js
verbose: true, // Write logs to console.
dry: false // Do not delete anything, good for testing.
}), 常用的执行命令
//写在package.json中
"scripts": {
"dev": "webpack-dev-server --inline --hot",
"build": "cross-env NODE_ENV=production webpack --progress --hide-modules",
"predeploy": "npm run build",
"deploy": "surge --project . --domain vue-2-simple-routing-example.surge.sh"
}, //在webpack.config.js的module.exports里面写-->例子,完整的看官网
devServer: {
// Enable history API fallback so HTML5 History API based
// routing works. This is a good default that will come
// in handy in more complicated setups.
historyApiFallback: true, // Unlike the cli flag, this doesn't set
// HotModuleReplacementPlugin!
hot: true,
inline: true, // Display only errors to reduce the amount of output.
// stats: 'errors-only', host: "localhost", // Defaults to `localhost` process.env.HOST
port: "8081", // Defaults to 8080 process.env.PORT
}
//webpack-dev-server只是相当于建一本地服务器,--hot开启热加载(但是我本地开启了不仅html连css改动都没变化) //暂时自己用webpack -w --devtool source-map
//仅用来编译css和js之类的,手动刷新... # 常用的loader css-loader //转义css
style-loader //转义css
sass-loader //转义scss文件
node-sass //安装sass-loader则必装
file-loader //url-loader则必装此插件
html-loader
url-loader //图片,字体等需要用上
extract-text-webpack-plugin //独立css
html-webpack-plugin //执行分配html
jquery
webpack
webpack-dev-server //建立本地服务器
expose-loader //全局声明??
babel-loader
babel-core //安装babel-loader则必装
babel-preset-es2015
open-browser-webpack-plugin //自动打开浏览器
webpack-validator //验证是否正确 cnpm install babel-core babel-loader babel-preset-es2015 extract-text-webpack-plugin file-loader html-webpack-plugin jquery node-sass sass-loader url-loader file-loader webpack css-loader style-loader webpack-dev-server open-browser-webpack-plugin --save-dev # 常用片段 ## jquery --用来全局引入jquery类似shim
第一种方法
jquryPath = path.resolve(node_modules, 'jquery/dist/jquery.min.js');
resolve: {
alias: {
'jquery': jquryPath,
},
extensions: ['', '.js', '.json']
},
var providePlugin = new webpack.ProvidePlugin({
$: 'jquery',
jQuery: 'jquery',
'window.jQuery': 'jquery',
'window.$': 'jquery',
});
第二种方法
{
test: require.resolve('jquery'), // 此loader配置项的目标是NPM中的jquery
loader: 'expose?$!expose?jQuery', // 先把jQuery对象声明成为全局变量`jQuery`,再通过管道进一步又声明成为全局变量`$`
}, 如果需要使用babel-preset-es2015的话需要在文件下创建一个.babelrc:
{
"presets": ["es2015"]
}
或者也可以放到packjson里面 # git提交配置--不提交指定目录文件 新建一个.gitignore的文件,在里面写格式如下: node_modules/
src/
npm-debug.log # 常用启动命令
"start": "webpack-dev-server --hot --inline" # 额外东西 ## CommonJS写法 eg:
nav.js---- function getNav(){
var el=document.getElement.querySelectorAll('.nav');
return el.innerHTML;
}
module.exports= getNav; main.js---- var nav=require('./nav');
console.log(nav()) ######## 需要强烈注意到几个点: ## 1、loder的执行顺序是从右到左 npm安装node-sass模块的时候,会卡在 node scripts/install.js这里,因为要去github.com上下载二进制源码,众所周知的原因,国内的网络上github.com速度太不稳定了,所以安装很慢。
这里推荐一种极速安装的方法,当然还是使用万能的淘宝镜像源。
打开~/.npmrc(windows用户打开 c:\Users\当前用户名\.npmrc) SASS_BINARY_SITE=https://npm.taobao.org/mirrors/node-sass/ 增加一行npm install 之后就可以了。
webpacke踩坑-新手的更多相关文章
- 日常踩坑-------新手使用idea
mybatis在idea的maven项目中的坑 今天遇到mybatis的报错,搞了好久才搞懂,在网上找了好久的相似案例,也没有搞定,先来看下网上常见的解决办法吧,相信也能解决大部分人的报错. 1.ma ...
- JavaScript 新手的踩坑日记
引语 在1995年5月,Eich 大神在10天内就写出了第一个脚本语言的版本,JavaScript 的第一个代号是 Mocha,Marc Andreesen 起的这个名字.由于商标问题以及很多产品已经 ...
- echart 新手踩坑
仪表盘踩坑 我采用的是单文件引入的方式来加载echarts图标也可以使用配置等方式详情参考文档,如果同学们要做出更加丰富的样式请参考文档配置手册配置手册:http://echarts.baidu.co ...
- 【常见踩坑】USB调试安装失败(Installation failed with message INSTALL_CANCELED_BY_USER)
一.写在前面 最近一直在忙活着项目重构,忙活了一个多月(那是天天加班,不分昼夜呀,ps:这不是我司要求的哈),终于把沉积了三四年的老项目给重构了,目前在测试阶段,也总算有了点闲时来跟大家分享分享一些问 ...
- [置顶]
xamarin android toolbar(踩坑完全入门详解)
网上关于toolbar的教程有很多,很多新手,在使用toolbar的时候踩坑实在太多了,不好好总结一下,实在浪费.如果你想学习toolbar,你肯定会去去搜索androd toolbar,既然你能看到 ...
- 微信小程序踩坑集合
1:官方工具:https://mp.weixin.qq.com/debug/w ... tml?t=1476434678461 2:简易教程:https://mp.weixin.qq.com/debu ...
- Spring Boot 开发系列一 开发踩坑
这是学习spring boot 的第二周,公司号称这玩意是啥都不会的新手就可以填空开发,于是决定上手一把,怎么说我也是搞了快七八年的.NET和.NETcore,没想到无情打脸,快被这个能填空开的IDE ...
- manjaro xfce 18.0 踩坑记录
manjaro xfce 18.0 踩坑记录 1 简介1.1 Manjaro Linux1.2 开发桌面环境2 自动打开 NumLock3 系统快照3.1 安装timeshift3.2 使用times ...
- 02-NVIDIA Jetson TX2 通过JetPack 3.1刷机完整版(踩坑版)
未经允许,不得擅自改动和转载 文 | 阿小庆 2018-1-20 本文继第一篇文章:01-NVIDIA Jetson TX2开箱上电显示界面 TX2 出厂时,已经自带了 Ubuntu 16.04 系统 ...
随机推荐
- MIT-线性代数笔记(1-6)
学习目录 第 01 讲 行图像和列图像 第 02 讲 矩阵消元 第 03 讲 矩阵的乘法和逆矩阵 第 04 讲 矩阵的LU 分解 第 05 讲 转置.置换和空间 第 06 讲 列空间和零空间 第 07 ...
- shell编程之BASH变量(2)
变量命名规范 在bash中,变量的默认类型都是字符串型,定义 name = 'kk' 变量分类 用户自定义变量.变量自定义的 环境变量:这种变量中主要保存的是和系统操作环境相关的数据.变量可以自定义, ...
- WEB页面的生命周期,DOMContentLoaded,load,beforeunload,unload
简言 理解WEB页面的生命周期,文档加载事件及顺序对WEB开发有十分的重要意义.如果不理解,在元素未加载就提前操作元素,则得不到想要的结果.而如果页面完全加载完成后,再进行操作,则又会影响用户体验. ...
- Python基本格式化输出
什么叫格式化输出? 数据按照某种特殊的要求输出 假如输入一个整数,希望整数按照十六进制,八进制输出,如果输入一个小数,希望小数保留后面2位数然后输出,或者以科学计数法的方式来输出小数.字符串的输出希望 ...
- C#泛型简单应用
最近老板要在app里开展金融模块了,产品一下就丢丢丢二三十个表单下来,怎么办,赶紧写代码,有20多个表单要提交呢,得建20多个表.等等,好像这些表单很相似,公司信息,个人信息,可是还有部分不同信息怎么 ...
- css实现多行多列的布局
1.两列多行: HTML: <div class="box1"> box1:实现两列多行布局 <ul> <li>111</li> & ...
- centos/linux下的安装Maven
1.保证该项目安装了JDK 请在系统中输入java -version查看该命令是否存在 如果没有安装JDK请移步到Centos/linux下的JDK安装 2.下载Maven wget http://m ...
- CentOS 6安装Oracle报错解决方案
1. Preparing to launch Oracle Universal Installer from /tmp/OraInstall2017-05-23_04-18-48AM. Please ...
- Nginx的gzip压缩的原理和设置参数
开启Nginx gzip压缩非常简单,达到的效果可以压缩静态文件大小.提高页面访问速度.节省流量和带宽是很有帮助的,也为用户省去了很多流量:唯一的不足就是开启之后服务器这边会增加运算,进行压缩运算处理 ...
- python+flask:实现POST接口功能
1.首先需要安装python和flask,这个是必须的嘛. 2.我们这里实现的是一个POST功能的简单接口. from flask import Flask, request, jsonify imp ...