課程
/前端開發
/前端工具
/webpack深入與實戰
跟著視頻的安裝步驟安裝了bable打包的時候也不報錯,但在瀏覽器控制臺報錯了,請問怎么處理?
2019-04-19
源自:webpack深入與實戰 4-2
正在回答
module:?{ ????loaders:?[ ????????{ ????????????test:?/\.js$/, ????????????loader:?"babel", ????????} ????] }
檢查你的正則是否正確
//?jshint?esversion:6?
const?path?=?require('path');
const?glob?=?require('glob');?//?glob.sync()返回正則路徑下所有匹配的文件
const?htmlWebpackPlugin?=?require('html-webpack-plugin');
const?{?CleanWebpackPlugin?}?=?require('clean-webpack-plugin');
//?__dirname為當前絕對路徑
//?path.resolve:會把一個路徑或者一個路徑片段的序列解析為一個絕對路徑
//?path.join:?使用平臺特定的分割符號(/或者\)把給定的path片段連接到一起,并且規范化成路徑,若任意一個路徑片段類型錯誤,會報錯
//*?*和?*一樣,可以匹配任何內容,但**不經可以匹配路徑中的某一段,而且可以匹配'a/b/c'這樣帶有'/'的內容,所以它還可以匹配子文件夾下的文件
let?DIST_PATH?=?path.resolve(__dirname,?'../dist');
let?SRC_PATH?=?path.resolve(__dirname,?'../src');
let?entryFiles?=?{};?//?入口文件
let?pluginAll?=?[];?//?存放所有的html插件
//?let?filesTest?=?path.join(SRC_PATH?+?'/../*.js');
//?console.log(filesTest);
//?[\s]表示只要出現空白就匹配
//?[\S]表示非空白就匹配
let?jsFiles?=?glob.sync(SRC_PATH?+?'/**/*.js');
console.log(jsFiles);
jsFiles.forEach((value)?=>?{
????let?subkey?=?value.match(/src\/(\S*)\.js/)[1];
????entryFiles[subkey]?=?value;
});
let?htmlFiles?=?glob.sync(SRC_PATH?+?'/**/*.html');
console.log(htmlFiles);
htmlFiles.forEach((value)?=>?{
????let?pageStr?=?value.match(/src\/(\S*)\.html/);
????let?name?=?pageStr[1];
????console.log(name);
????let?htmlConfig?=?{
????????filename:?path.join(DIST_PATH,?name?+?'[chunkhash:5].html'),
????????title:?name,
????????template:?path.join(SRC_PATH,?name?+?'.html'),
????????inject:?false,?//?script放在html里面的位置?body?head?true(默認值)?false
????????hash:?true,
????????chunks:?[name],
????????excludeChunks:?[],?//?排除的js
????????date:?new?Date(),
????????minify:?{
????????????removeComments:?true,
????????????//?collapseWhitespace:?true,?//壓縮空格
????????}
????};
????//?如果是index頁面,需要添加common.js到頁面中
????if?(name?===?'index/index')?{
????????htmlConfig.chunks?=?[name,?'app'];
????????console.log(htmlConfig.chunks);
????}
????let?htmlPlugin?=?new?htmlWebpackPlugin(htmlConfig);
????pluginAll.push(htmlPlugin);
pluginAll.push(new?CleanWebpackPlugin());
module.exports?=?{
????//?入口js文件
????//?entry?:?path.resolve(__dirname,'../src/index.js')?,?//方式一:打包一個js
????//?entry?:?['./src/index.js','./src/test.js'],?????????//方式二:把多個js打包在一起
????//?entry:?{????????????????????????????????????????????//方式三:把多個js分別打包成不同目錄
????//?????index:?'./src/index.js',
????//?????test:?'./src/test.js'
????//?},
????entry:?entryFiles,
????//?編譯輸出的路徑
????output:?{
????????path:?DIST_PATH,?//?本地編譯后地址
????????filename:?'[name].[chunkhash:5].js',
????????//?publicPath:?'http://cdn.com',?//?上線地址
????},
????//?模塊解析
????module:?{
????????rules:?[
????????????{
????????????????test:?/\.js$/,
????????????????exclude:?/node_modules/,
????????????????loader:?'babel-loader',
????????????????query:?{
????????????????????presets:?['@babel/preset-env']
????????????????}
????????????}
????????]
????//?插件
????plugins:?pluginAll,
????//?并發服務器
????devServer:?{
????????hot:?true,?//?熱更新
????????contentBase:?DIST_PATH,
????????port:?8011,?//?服務端口
????????host:?'0.0.0.0',//?host體地址
????????historyApiFallback:?true,
????????open:?true,?//?自動打開瀏覽器
????????useLocalIp:?true,//?是否在打包的時候用自己的ip
????????proxy:?{
????????????'/api':?'http://localhost:3000'
????????},
????????https:?true
????watchOptions:?{
????????poll:?1000,//?每秒檢查一次變動
????????aggregateTimeout:?500,?//?防止重復按鍵,500毫米內算按鍵一次
????????ignored:?'/node_modules/',//?不監測大型文件夾
};
注意版本,老師講課的時候是webpack1.3的版本。你現在安裝的webpack 應該是4.0以上了,雖然老師講的大部分內容還是挺好的。但有一些用法是改變了的。如loader的配置就改成下面這樣了。具體可以去看npm官網關于baber-loader的配置,例如如下:module:?{??rules:?[????{??????test:?/\.js$/,??????exclude:?/(node_modules|bower_components)/,??????use:?{????????loader:?'babel-loader',????????options:?{??????????presets:?['@babel/preset-env']????????}??????}????}??]}
大哥,你的layer里面的關系比較復雜吧,包括其他,js和css的引用吧,這樣可能要在配置文件里面用style-loader和css-loader 配合處理才行吧。但,如果你改成簡單的彈出一個文本應該沒問題的。
舉報
webpack實戰教程,用真實項目帶你探索 webpack 強大的功能
1 回答style-loader,css-loader打包CSS報錯
2 回答babel參數按照視頻這樣設置loader:"babel"會出錯,改成loader:"babel-loader"打包才成功
2 回答瀏覽器中layer報錯
6 回答第二種打包import的css報錯
9 回答按照老師的寫webpack.config.js后運行報錯
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號-11 京公網安備11010802030151號
購課補貼聯系客服咨詢優惠詳情
慕課網APP您的移動學習伙伴
掃描二維碼關注慕課網微信公眾號
2022-03-06
檢查你的正則是否正確
2020-04-10
//?jshint?esversion:6?
const?path?=?require('path');
const?glob?=?require('glob');?//?glob.sync()返回正則路徑下所有匹配的文件
const?htmlWebpackPlugin?=?require('html-webpack-plugin');
const?{?CleanWebpackPlugin?}?=?require('clean-webpack-plugin');
//?__dirname為當前絕對路徑
//?path.resolve:會把一個路徑或者一個路徑片段的序列解析為一個絕對路徑
//?path.join:?使用平臺特定的分割符號(/或者\)把給定的path片段連接到一起,并且規范化成路徑,若任意一個路徑片段類型錯誤,會報錯
//*?*和?*一樣,可以匹配任何內容,但**不經可以匹配路徑中的某一段,而且可以匹配'a/b/c'這樣帶有'/'的內容,所以它還可以匹配子文件夾下的文件
let?DIST_PATH?=?path.resolve(__dirname,?'../dist');
let?SRC_PATH?=?path.resolve(__dirname,?'../src');
let?entryFiles?=?{};?//?入口文件
let?pluginAll?=?[];?//?存放所有的html插件
//?let?filesTest?=?path.join(SRC_PATH?+?'/../*.js');
//?console.log(filesTest);
//?[\s]表示只要出現空白就匹配
//?[\S]表示非空白就匹配
let?jsFiles?=?glob.sync(SRC_PATH?+?'/**/*.js');
console.log(jsFiles);
jsFiles.forEach((value)?=>?{
????let?subkey?=?value.match(/src\/(\S*)\.js/)[1];
????entryFiles[subkey]?=?value;
});
let?htmlFiles?=?glob.sync(SRC_PATH?+?'/**/*.html');
console.log(htmlFiles);
htmlFiles.forEach((value)?=>?{
????let?pageStr?=?value.match(/src\/(\S*)\.html/);
????let?name?=?pageStr[1];
????console.log(name);
????let?htmlConfig?=?{
????????filename:?path.join(DIST_PATH,?name?+?'[chunkhash:5].html'),
????????title:?name,
????????template:?path.join(SRC_PATH,?name?+?'.html'),
????????inject:?false,?//?script放在html里面的位置?body?head?true(默認值)?false
????????hash:?true,
????????chunks:?[name],
????????excludeChunks:?[],?//?排除的js
????????date:?new?Date(),
????????minify:?{
????????????removeComments:?true,
????????????//?collapseWhitespace:?true,?//壓縮空格
????????}
????};
????//?如果是index頁面,需要添加common.js到頁面中
????if?(name?===?'index/index')?{
????????htmlConfig.chunks?=?[name,?'app'];
????????console.log(htmlConfig.chunks);
????}
????let?htmlPlugin?=?new?htmlWebpackPlugin(htmlConfig);
????pluginAll.push(htmlPlugin);
});
pluginAll.push(new?CleanWebpackPlugin());
module.exports?=?{
????//?入口js文件
????//?entry?:?path.resolve(__dirname,'../src/index.js')?,?//方式一:打包一個js
????//?entry?:?['./src/index.js','./src/test.js'],?????????//方式二:把多個js打包在一起
????//?entry:?{????????????????????????????????????????????//方式三:把多個js分別打包成不同目錄
????//?????index:?'./src/index.js',
????//?????test:?'./src/test.js'
????//?},
????entry:?entryFiles,
????//?編譯輸出的路徑
????output:?{
????????path:?DIST_PATH,?//?本地編譯后地址
????????filename:?'[name].[chunkhash:5].js',
????????//?publicPath:?'http://cdn.com',?//?上線地址
????},
????//?模塊解析
????module:?{
????????rules:?[
????????????{
????????????????test:?/\.js$/,
????????????????exclude:?/node_modules/,
????????????????loader:?'babel-loader',
????????????????query:?{
????????????????????presets:?['@babel/preset-env']
????????????????}
????????????}
????????]
????},
????//?插件
????plugins:?pluginAll,
????//?并發服務器
????devServer:?{
????????hot:?true,?//?熱更新
????????contentBase:?DIST_PATH,
????????port:?8011,?//?服務端口
????????host:?'0.0.0.0',//?host體地址
????????historyApiFallback:?true,
????????open:?true,?//?自動打開瀏覽器
????????useLocalIp:?true,//?是否在打包的時候用自己的ip
????????proxy:?{
????????????'/api':?'http://localhost:3000'
????????},
????????https:?true
????},
????watchOptions:?{
????????poll:?1000,//?每秒檢查一次變動
????????aggregateTimeout:?500,?//?防止重復按鍵,500毫米內算按鍵一次
????????ignored:?'/node_modules/',//?不監測大型文件夾
????}
};
2019-05-06
注意版本,老師講課的時候是webpack1.3的版本。你現在安裝的webpack 應該是4.0以上了,雖然老師講的大部分內容還是挺好的。但有一些用法是改變了的。如loader的配置就改成下面這樣了。具體可以去看npm官網關于baber-loader的配置,例如如下:
module:?{
??rules:?[
????{
??????test:?/\.js$/,
??????exclude:?/(node_modules|bower_components)/,
??????use:?{
????????loader:?'babel-loader',
????????options:?{
??????????presets:?['@babel/preset-env']
????????}
??????}
????}
??]
}
2019-05-06
大哥,你的layer里面的關系比較復雜吧,包括其他,js和css的引用吧,這樣可能要在配置文件里面用style-loader和css-loader 配合處理才行吧。
但,如果你改成簡單的彈出一個文本應該沒問題的。