Deprecated: Optional parameter $keys declared before required parameter $cms_id is implicitly treated as a required parameter in /home/www/dev/work/class/blog/CmsKey.php on line 75

Deprecated: Creation of dynamic property lvesu\lvesu\controller\blog\main::$outlink is deprecated in /home/www/dev/work/website/lvesu/template/blog/cms/cms.tpl on line 2

Deprecated: Creation of dynamic property lvesu\lvesu\controller\blog\main::$status is deprecated in /home/www/dev/work/website/lvesu/template/blog/index.head.php on line 2
解决MockJS引发的上传错误TypeError: ***.upload.addEventListener is not a function - 互联网笔记

略微加速

略速 - 互联网笔记

解决MockJS引发的上传错误TypeError: ***.upload.addEventListener is not a function

2025-07-11 leiting (13阅读)

标签 JavaScript

遇到的问题:**TypeError: *.upload.addEventListener is not a function

本地开发环境中上传功能正常,但在测试环境出现了该错误

我尝试了以下解决方案:

方案一

修改以下文件:

  1. node_modules/mockjs/dist/mock.js 第8308行

  2. node_modules/mockjs/src/xhr/xhr.js 第216行
    添加代码:MockXMLHttpRequest.prototype.upload = xhr.upload;

此方案虽能解决问题,但存在局限性:

  • 测试和线上环境采用自动打包部署

  • 修改不会被打包包含

方案二

根本原因是vue-cli中的mockjs模块覆盖拦截了XMLHttpRequest,导致无法访问对象属性。

解决方案是移除mockjs:

  1. 卸载mockjs依赖:

npm uninstall mockjs
  1. 修改配置文件:

  • vue.config.js:注释相关配置

  • src/main.js:注释mockjs引入


如果你使用的是 Pure Admin 那就注释掉

import { visualizer } from "rollup-plugin-visualizer";
  const prodMock = true;
  
  // mock支持    
  viteMockServe({      
      mockPath: "mock",      
      localEnabled: command === "serve",      
      prodEnabled: command !== "serve" && prodMock,      
      injectCode: `
         import { setupProdMockServer } from './mockProdServer';
         setupProdMockServer();        
     `,      
     logger: false    
    }),


https://blog.csdn.net/weixin_44070058/article/details/139737676

北京半月雨文化科技有限公司.版权所有 京ICP备12026184号-3