Alexey Starinsky
Alexey Starinsky

Reputation: 4295

JavaScript warning: Assignment to property of function parameter

I compiled vue-flash-message component from sources and got the following warning:

✘  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;

in the following code:

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;

    ...
  },
};

is it possible to correct the code and make it compile without warnings?

Upvotes: 0

Views: 1324

Answers (1)

Ohgodwhy
Ohgodwhy

Reputation: 50787

This is not an issue.

You have an ES Lint rule setup for no-param-reassign. This conflicts with Vue's way of creating plugins, where you are directed to write to the prototype directly. You can see my statement reinforced here

Your only choice is to fork that project, and ignore the line with your linter if it's bugging you that much.

Upvotes: 1

Related Questions