laravel-elixir-vue-2 icon indicating copy to clipboard operation
laravel-elixir-vue-2 copied to clipboard

export default {} works differently than module.exports = {}

Open Skysplit opened this issue 9 years ago • 5 comments

When using exports default { ... }, require('./components/Example.vue') returns object with default key as content.

export default {
    data() {
        return {
            counter: 0
        }
    },
    methods: {
        increment() {
            this.counter += 1
        }
    }
}

Returns

{
    computed: Object,
    default: {
        ready: function data() {},
        methods: Object,
    }
}

module.exports = {
    data() {
        return {
            counter: 0
        }
    },
    methods: {
        increment() {
            this.counter += 1
        }
    }
}

Returns

{
    computed: Object,
    ready: function ready() {},
    methods: Object
}

Shouldn't these two examples work the same way?

Skysplit avatar Oct 02 '16 21:10 Skysplit

This occurred to me when I changed from laravel-elixir-vue to laravel-elixir-vue-2. My components props were not set. When I changed exports default to module.exports it works. Weirdly enough, on laravel-elixir-vue, exports default works just fine. 😞

adifaidz avatar Nov 01 '16 09:11 adifaidz

I think it's the same thing as in https://github.com/JeffreyWay/laravel-elixir-vue/pull/10

For this to work this package would need to use babel loader for .js files and add "babel-plugin-add-module-exports" as dependency, although the current ES proposal is using "default" as in require('./components/Example.vue').default, or that's why I understand (not versed on node/js enviroment).

osiux avatar Nov 04 '16 10:11 osiux

@osiux Thanks for the response, will try and confirm the results later 👍

adifaidz avatar Nov 04 '16 12:11 adifaidz

Checking in to report that going from vue 1 to 2 after following the vue 1 laracasts, I had to change all my single file components to module.exports from exports default.

exports default no longer worked for me either; none of my properties came up defined.

nbyloff avatar Jan 06 '17 22:01 nbyloff

@osiux I can't seem to get that done lol ( I'm also not versed on node) 😆 . But what I can confirm is that after getting a fresh laravel 5.3, it works out of the box for me. Maybe this didn't work because there is an issue with migrating from vue 1 to vue 2. I can only assume that's the case because laravel 5.3 came with vue 2 support

adifaidz avatar Jan 10 '17 06:01 adifaidz