html模板里的script引用外部文件被打包成src="[object Object]"

305 阅读1分钟

今天开发的时候碰到了问题: 在html模板里面引入了jsbridge文件:

<script type="text/javascript"  src="./static/jsbridge.js"></script>

结果在打包的时候报错:navigator is not defined

image.png

该文件内部有 var u = navigator.userAgent代码;

后续添加以下代码解决报错

var u = '';
  if ('undefined' != typeof navigator) {
    u = navigator.userAgent;
  }

却发现打包出来的index.html文件引入变成了如下:

<script type="text/javascript" src="[object Object]"></script>

image.png

最后经排查发现webpack的html-loader将index.html文件也进行了处理,最后在该loader的配置中排除了index.html解决了问题

{
  test: /\.html$/i,
  loader: 'html-loader',
  exclude: path.resolve(__dirname, '../index.html'),
  options: {
    minimize: false
  }
}