Favicon 不会显示,似乎是 webpack 的问题

Posted

技术标签:

【中文标题】Favicon 不会显示,似乎是 webpack 的问题【英文标题】:Favicon won't show, seems to be issue with webpack 【发布时间】:2016-05-28 13:57:18 【问题描述】:

我有一个 React/Redux 应用程序,我正在使用 webpack 转换我的 JSX 和 ES6 并将我的样式表和图像加载到我的 JS 中。我的开发服务器托管在 3000 端口上。

这是我的 webpack.config.js:

var path = require('path');
var webpack = require('webpack');
var htmlWebpackPlugin = require('html-webpack-plugin');

module.exports = 
  devtool: 'cheap-module-eval-source-map',
  entry: [
    'webpack-hot-middleware/client',
    './src/js'
  ],
  output: 
    path: path.join(__dirname, 'dist'),
    filename: 'bundle.js',
    publicPath: '/static/'
  ,
  plugins: [
    new webpack.optimize.OccurenceOrderPlugin(),
    new webpack.HotModuleReplacementPlugin(),
    new webpack.NoErrorsPlugin(),
    new HtmlWebpackPlugin(
      favicon: 'src/images/favicon.ico'
    )
  ],
  module: 
    loaders: [
      test: /\.js$/,
      loaders: [ 'babel' ],
      exclude: /node_modules/,
      include: __dirname
    , 
      test: /\.less?$/,
      loaders: [ 'style', 'css', 'less' ],
      include: __dirname
    ,
    
      test: /\.(otf|eot|svg|ttf|woff|woff2)(\?v=[0-9]\.[0-9]\.[0-9])?$/,
      loaders: [ 'url' ],
      include: __dirname
    ,
    
      test: /\.(png|ico|gif)?$/,
      loaders: [ 'file' ],
      include: __dirname
    ]
  
;

当我点击 localhost:3000 时,除了我的 favicon 之外,我所期望的一切都在那里。如果我去 localhost:3000/static/favicon.ico,我的 favicon 就在那里。可以使用一些专业知识来调试此问题。

【问题讨论】:

您在localhost:3000/favicon.ico 看到了什么?这就是浏览器寻找它的地方...... 404,但我也在 index.html 中指向 /static/favicon.ico。 <link rel="shortcut icon" href="/static/favicon.ico" "image/x-icon" /> 我现在在 localhost:3000/favicon.ico 看到它,通过使用我的 express web 服务器的 'serve-favicon' 中间件,但即使在清除我的缓存并更改我的链接标签之后仍然没有运气index.html 到<link rel="shortcut icon" href="/favicon.ico" type="image/x-icon" /> 有趣...这都是浏览器吗?也许放弃领先的/ 使其成为相对路径?引用MDN:“快捷链接类型经常出现在图标之前,但这种链接类型不符合标准,被忽略,网络作者不得再使用它。” - 也许尝试符合标准的<link rel="icon" href="favicon.ico" />,或者完全删除它,因为这代表了默认行为。 我与webpack-dev-server 有完全相同的问题;( 【参考方案1】:

浏览器会在localhost:3000/favicon.ico 中查找您的网站图标,所以它需要在其中。尝试重写 url 为 favicon.ico 提供 /favicon.ico 路由。例如,如果您使用 historyApiFallback,请执行以下操作:

historyApiFallback: 
    rewrites: [
        // shows favicon
         from: /favicon.ico/, to: '[path/to/favicon]' 
    ]

【讨论】:

以上是关于Favicon 不会显示,似乎是 webpack 的问题的主要内容,如果未能解决你的问题,请参考以下文章

Webpack URIError:无法解码参数'/%PUBLIC_URL%/favicon.ico'

为啥 我们的网站(www.t0001.com)在UC导航里不会显示图标的 我有设置了favicon.ico

Favicon.ico显示问题

Django中favicon.ico文件的配置

Favicon 没有出现在 VueJS 中

Django中favicon.ico文件的配置