Advertisement

OTS parsing error: invalid version tag解决方法

阅读量:

采用Webpack技术对css、less、scss以及ttf字体文件进行打包处理,在打包过程中经常会遇到各种问题。例如去年使用的语法结构,在今天的应用中可能会导致各种问题出现。毕竟语法是不断完善的,在学习过程中难免会感到困惑的时候。
过度纠结并不可取;等到积累了一定的经验后,
对前面的内容进行适当调整,
最终能够达到预期的效果。

目标:打包字体文件 png|woff|woff2|svg|ttf|eot

工具: 就是使用webpack工具

基础:适合具有node基础的开发人员适用

需要下载的插件包

CSS解析器将处理外部CSS文件;文件管理器负责管理各种资源;HTML内联页面生成器是一种能够在虚拟内存中创建嵌入式HTML页面的应用程序。

CSS样式提取器负责将解析后的样式应用到HTML文档并放置在header部分;URL解析模块管理所有外部链接信息;打包引擎负责整合项目中的各种组件;提供了一系列简便快捷的小工具用于自定义打包配置;Dev server构建了一个用于开发环境中的虚拟服务器系统。

静态编译: webpack

动态编译[开启dev 通过http协议访问] : npm run dev


1.网站下载iconfont字体文件包

2.根据字体文件包中提示构建css文件

3.引入html文件测试

【此步骤省略,字体包中有案例】


配置man.js

复制代码
 //导入资源

    
 import './css/index.css';
    
    
    
    
    代码解释

index.htm

复制代码
 <!DOCTYPE html>

    
 <html lang="zh">
    
 <head>
    
 	<meta charset="UTF-8">
    
 	<meta name="viewport" content="width=device-width, initial-scale=1.0">
    
 	<meta http-equiv="X-UA-Compatible" content="ie=edge">
    
 	<title></title>
    
 	<!-- <link rel="stylesheet" href="./css/index.css" /> -->
    
 </head>
    
 <body>
    
 	<span class="iconfont afont">&#xe60d;</span>
    
 	<span class="iconfont afont">&#xe60c;</span>
    
 	<span class="iconfont afont">&#xe637;</span>
    
 	<span class="iconfont afont">&#xe63b;</span>
    
 	<span class="iconfont afont">&#xe620;</span>
    
 </body>
    
 </html>
    
    
    
    
    代码解释

index.css

复制代码
 @font-face {

    
   font-family: 'iconfont';
    
   src: url('./icon/iconfont.ttf?t=1650505701581') format('truetype');
    
 }
    
 .iconfont {
    
   font-family: "iconfont" !important;
    
   font-size: 16px;
    
   font-style: normal;
    
   -webkit-font-smoothing: antialiased;
    
   -moz-osx-font-smoothing: grayscale;
    
 }
    
  
    
 span{
    
 	height: 100px;
    
 	width: 100px;
    
 	/* display: block; */
    
  
    
 }
    
 .afont{
    
 	font-size: 150px;	
    
 }
    
    
    
    
    代码解释

项目初始化

module的下载这里不在累赘

重点:指定类型为'javascript/auto' //必须指定类型 虽然不清楚具体情况 即使是在较早的版本中也需要明确指定类型才能正常加载 了解这一设置原理的朋友可以在下方留言区分享更多细节

没有指定type: 'javascript/auto'

无法解析下载的字体,请查看以下具体路径信息:

http://localhost:3000/36bdff0eed0ef8904943.ttf?t=1650505701581

在localhost上尝试解析时出现了一个OTS错误:无效版本标识符

webpack.config.js文件配置[完整解决]

复制代码
  
    
 const {resolve} = require('path');
    
 const HtmlWebpackPlugin = require('html-webpack-plugin');
    
  
    
 module.exports = {
    
 	entry:'./src/main.js',
    
 	output:{
    
 		filename:'bundle.js',
    
 		path:resolve(__dirname,'dist')
    
 	},
    
 	module:{
    
 		rules:[
    
 			{test:/\.css$/, use:['style-loader','css-loader']},//css
    
 			// {exclude: /\.(css|js|html)$/, //排除打包其他资源(除了html js css资源意外的资源)这个静态打包字体文件
    
 			// loader:'file-loader'
    
 			// },
    
  //{test:/\.(png|woff|woff2|svg|ttf|eot)$/, use:'url-loader?esModule=false&limit=10*1024&name=[hash:8]-[name].[ext]' ,type: 'javascript/auto'},
    
 			{test:/\.(png|woff|woff2|svg|ttf|eot)$/,
    
 			loader:'url-loader',
    
 			options: {
    
 				limit: 10*1024,  //这里要足够大这样所有的字体图标都会打包到css中
    
 				esModule:false,
    
 				name:"[hash:8]-[name].[ext]"
    
 				},
    
 			// type: 'javascript/auto' //必须指定类型
    
 			}
    
 			]
    
 			},
    
 	plugins:[
    
 		new HtmlWebpackPlugin({
    
 			template:'./src/index.html',
    
 			filename:'index.html'
    
 		})
    
 	],
    
 	mode:'development'
    
 }
    
    
    
    
    代码解释

使用npm run dev 开启虚拟服务器

打开浏览器地址栏访问http://localhost:3000, 页面中的iconfont字体显示正常


全部评论 (0)

还没有任何评论哟~