You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Firefox 17 for Mac下NS_ERROR_XPC_BAD_OP_ON_WN_PROTO异常求助

解决Angular4在Mac Firefox17中出现NS_ERROR_XPC_BAD_OP_ON_WN_PROTO错误的方案

我之前维护老项目时碰到过完全一样的问题,折腾了好一阵才搞定,分享几个亲测有效的解决思路:

  • 补全必要的Polyfill
    Firefox17是非常老旧的版本,对ES6+特性支持极差,而Angular4默认依赖很多这类特性。打开项目的polyfill.ts文件,确保引入了针对ES6核心特性的polyfill,比如:

    import 'core-js/es6/symbol';
    import 'core-js/es6/object';
    import 'core-js/es6/function';
    import 'core-js/es6/parse-int';
    import 'core-js/es6/parse-float';
    import 'core-js/es6/number';
    import 'core-js/es6/math';
    import 'core-js/es6/string';
    import 'core-js/es6/date';
    import 'core-js/es6/array';
    import 'core-js/es6/regexp';
    import 'core-js/es6/map';
    import 'core-js/es6/set';
    

    另外别忘了加上Firefox专属的Zone.js补丁:

    import 'zone.js/dist/zone-patch-firefox';
    
  • 调整编译目标为ES5
    Angular4当时使用的是.angular-cli.json配置文件,默认可能会编译成ES6代码,而Firefox17对ES6的支持几乎为零。找到配置文件里的build选项,把target设置为es5:

    "build": {
      "options": {
        "target": "es5",
        // 其他配置...
      }
    }
    

    修改后重新执行ng build,生成的代码就能兼容老Firefox了。

  • 排查第三方依赖的原型污染问题
    这个错误的核心原因是代码尝试修改了原生对象的原型,而老Firefox对这类操作有严格限制。vendor.bundle.js里的代码都是第三方依赖打包来的,你可以尝试逐个移除项目中的第三方库,每次移除后重新打包测试,找到触发错误的那个库。之后要么替换成更兼容的替代库,要么找该库支持老Firefox的历史版本。我当时碰到的是某个老版本的图表库在修改Array.prototype,换成兼容ES5的版本就好了。

  • 临时禁用Firefox的原型防护(不推荐生产环境)
    如果上面的方法都不行,作为临时测试方案,可以在Firefox的about:config页面中,找到javascript.options.wrap_native_objects选项,把它设置为false。但这个操作会降低浏览器的安全性,只建议在本地测试时用,绝对不要在生产环境让用户这么做。

内容的提问来源于stack exchange,提问作者Arun Kumar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 08:26:35