I’m creating a Vue plugin using Vue CLI 3. I was using the vue-cli-service build with target type lib to build the reusable plugin that could be imported into another project. While developing the plugin I was testing it as a local npm module (link) and I ran into this error “Cannot assign to read only property ‘exports’ of object”. I was using npm link to create a local module.
It took a lot of googling around to find the solution. It turns out it has to do with Babel and webpack. As always once you know the solution it is simple. I had to add sourceType unambiguous to my babel.config.js file. This is my babel.config.js file:
module.exports = {
presets: [
'@vue/app'
],
sourceType: 'unambiguous'
}
This comment of a webpack issue contains the explanation. Please check it out to understand why this works.
I hope this helps someone and saves them (lots of) time.