mirari / v-viewer

Image viewer component for vue, supports rotation, scale, zoom and so on, based on viewer.js
https://mirari.cc/v-viewer/
MIT License
2.49k stars 294 forks source link

VUE2用npm安装的本地开发正常,发布线上提示Assignment to constant variable #283

Closed ivanlee93 closed 10 months ago

ivanlee93 commented 1 year ago

VUE2用npm安装的本地开发正常,发布线上提示Assignment to constant variable

测试过,通过main引用了依赖其他啥都不动就会提示这个,本地开发不会

mirari commented 1 year ago

这是给常量赋值了,贴一下代码吧,至少也贴一下报错的上下文信息,不然没法判断问题

Tim-LZT commented 1 year ago

image

function assign(target, ...args) {
  let i = 0;
  if (isPrimitive(target))
    target = args[i++];
  if (!target)
    target = {};
  for (; i < args.length; i++) {
    if (isObject$3(args[i])) {
      for (const key of Object.keys(args[i])) {
        if (isValidKey(key)) {
          if (isObject$3(target[key]) && isObject$3(args[i][key])) {
            assign(target[key], args[i][key]);
          } else {
            target[key] = args[i][key];
          }
        }
      }
      assignSymbols(target, args[i]);
    }
  }
  return target;
}

assign 方法打包后变成

function l(e, ...t) {
      let r = 0;
      var i, n;
      for (("object" == typeof (i = e) ? null === i : "function" != typeof i) && (e = t[r++]),
      e || (e = {}); r < t.length; r++)
          if (c(t[r])) {
              for (const i of Object.keys(t[r]))
                  "__proto__" !== (i = i) && "constructor" !== i && "prototype" !== i && (c(e[i]) && c(t[r][i]) ? l(e[i], t[r][i]) : e[i] = t[r][i]);
              p(e, t[r])
          }
      return e
  }

不知道为啥打包后会有 i = i。

把 for (const key of Object.keys(args[i])) 改成 for (let key of Object.keys(args[i])) 就可以了。

mirari commented 1 year ago

@Tim-LZT 这像是编译器本身在代码压缩时的bug。 使用create-vue创建legacy的官方脚手架无法复现问题。可以提供下能稳定复现的环境配置

kkk-kppi commented 10 months ago

我今天也遇到了,本地开发没问题;打包之后出现的,我在本地预览和SIT都出现了这个情况; 具体出现的版本:1.7.2、1.7.1都有这个问题 image

解决办法:我install 到1.6.4之后,没出现这个问题了

mirari commented 10 months ago

我今天也遇到了,本地开发没问题;打包之后出现的,我在本地预览和SIT都出现了这个情况; 具体出现的版本:1.7.2、1.7.1都有这个问题 image

解决办法:我install 到1.6.4之后,没出现这个问题了

1.7.x更新了部分工具函数。我会尝试再次更新工具函数,但这个错误看上去还是编译器压缩代码时导致的奇怪问题

kkk-kppi commented 10 months ago

我今天也遇到了,本地开发没问题;打包之后出现的,我在本地预览和SIT都出现了这个情况; 具体出现的版本:1.7.2、1.7.1都有这个问题 image 解决办法:我install 到1.6.4之后,没出现这个问题了

1.7.x更新了部分工具函数。我会尝试再次更新工具函数,但这个错误看上去还是编译器压缩代码时导致的奇怪问题

好,更新之后,我更新下依赖版本再继续看下是否仍会出现这个问题

mirari commented 10 months ago

@kkk-kppi 已更新到1.7.3了,移除了这部分会出现问题的函数

monhly commented 10 months ago

@kkk-kppi 已更新到1.7.3了,移除了这部分会出现问题的函数

你好想问一下,更新完1.7.2以后为什么jenkins构建会出现这种错误? 是需要新装另外的插件吗?

image
mirari commented 10 months ago

@monhly 本地运行和build正常吗?

mirari commented 10 months ago

@kkk-kppi 已更新到1.7.3了,移除了这部分会出现问题的函数

你好想问一下,更新完1.7.2以后为什么jenkins构建会出现这种错误? 是需要新装另外的插件吗? image

看上去是viewerjs包没有安装。由于npm和pnpm下表现不一致,现在需要显式安装viewerjs npm i viewerjs v-viewer@legacy

kkk-kppi commented 10 months ago

@kkk-kppi 已更新到1.7.3了,移除了这部分会出现问题的函数

@mirari 目前本地install1.7.3之后,本地打包和preview打包产物没有出现问题了

mirari commented 10 months ago

感谢及时反馈