JavaScript警告:分配给函数参数的属性

JavaScript警告:分配给函数参数的属性,javascript,vue.js,Javascript,Vue.js,我从源代码处编译组件,并得到以下警告: ✘ http://eslint.org/docs/rules/no-param-reassign Assignment to property of function parameter 'Vue' src\components\vue-flash-message\index.js:173:5 Vue.prototype[options.storage] = FlashBus; 在以下代码中: export default { install

我从源代码处编译组件,并得到以下警告:

✘  http://eslint.org/docs/rules/no-param-reassign  Assignment to property of function parameter 'Vue'
src\components\vue-flash-message\index.js:173:5
  Vue.prototype[options.storage] = FlashBus;
在以下代码中:

export default {
  install(Vue, config = {}) {
    const defaults = {
      method: 'flash',
      storage: '$flashStorage',
      createShortcuts: true,
      name: 'flash-message',
    };
    const options = Object.assign(defaults, config);
    ...
  const FlashBus = new Vue({
    data() {
      return {
        storage: {
        },
      };
    },
    methods: {
      flash(msg, type, opts) {
        return new FlashMessage(FlashBus, msg, type, opts);
      },
      push(id, message) {
        Vue.set(this.storage, id, message);
      },
      destroy(id) {
        Vue.delete(this.storage, id);
      },
      destroyAll() {
        Vue.set(this, 'storage', {});
      },
    },
  });
    ...
    Vue.prototype[options.storage] = FlashBus;

    ...
  },
};
是否可以更正代码并使其在编译时不出现警告?

这不是问题

您有一个ES Lint规则设置,用于不重新分配参数。这与Vue创建插件的方式相冲突,即直接向原型写入


你唯一的选择就是放弃这个项目,如果有那么多麻烦你的话,就不用管你的线头了。

我不明白什么是FlashBus?这是Vue的全局变量吗?不太确定Vue扩展如何工作,但这看起来确实像是插件作者故意向原型添加了一些东西,因此您可能可以忽略该警告,因为它不是您自己的代码。可能警告来自您的linterWhat是Vue.prototype[options.storage]=FlashBus的目标;线更改每个Vue实例背后的原型(尤其是使用可枚举属性)似乎是件坏事:-@TimageWepe FlashBus是上面定义的,如果您不同意,请参阅仅禁用警告。