Common Errors: Cannot assign to read only property

Join the AI Workshop to learn more about AI and how it can be applied to web development. Next cohort February 1st, 2026

The AI-first Web Development BOOTCAMP cohort starts February 24th, 2026. 10 weeks of intensive training and hands-on projects.


There are several “read only property” errors you might encounter in JavaScript. Let’s cover the most common ones.

Attempted to assign to readonly property

This error occurs when you try to modify something that can’t be changed:

TypeError: Attempted to assign to readonly property

A common cause is trying to modify a string using dot notation. For example:

const data = '{"name": "test"}' // This is a string, not an object
data.name = 'Flavio' // Error! Strings are immutable

The fix is to parse the JSON first:

const data = '{"name": "test"}'
const obj = JSON.parse(data)
obj.name = 'Flavio' // Works!

Remember: Strings are immutable in JavaScript. Once defined, you can’t update individual characters or properties on them.

Cannot assign to read only property ‘exports’

This error is generated by Webpack:

TypeError: Cannot assign to read only property 'exports' of object '#<Object>' error

It means you’re mixing CommonJS and ES Modules syntax incorrectly.

The problem

Using CommonJS syntax in an ES Modules context:

const myfunction = () => {}
module.exports = myfunction

The solution

Use ES Modules syntax instead:

const myfunction = () => {}
export default myfunction

Then import like this:

import myfunction from './myfunction'

Exporting multiple functions

To export multiple functions or objects:

// myfunctions.js
const myfunction1 = () => {}
const myfunction2 = () => {}

export {
  myfunction1,
  myfunction2
}

Import them as:

import { myfunction1, myfunction2 } from './myfunctions.js'

Other causes

This error can also occur when:

  1. Trying to modify a frozen object (Object.freeze())
  2. Trying to modify a property defined with writable: false in a property descriptor
  3. Using strict mode and assigning to a non-writable property

Lessons in this unit:

0: Introduction
1: "X is not a function" errors
2: "document is not defined" error
3: ▶︎ Cannot assign to read only property
4: Parse failure: Unterminated string constant
5: FormData multipart fetch issues
6: regeneratorRuntime is not defined
7: Unexpected identifier in modules
8: Unterminated string literal