Description
Operating system
Windows 11, macOS
Eleventy
3.0.0
Describe the bug
Since upgrading to Eleventy 3.0.0, eleventy --serve
is crashing after picking up the first changes to the watched files (i.e. not immediately upon running eleventy --serve
).
Error:
[11ty] Problem writing Eleventy templates:
[11ty] Cannot assign to read only property 'source' of object '#<Object>' (via TypeError)
[11ty]
[11ty] Original error stack trace: TypeError: Cannot assign to read only property 'source' of object '#<Object>'
[11ty] at getMergedItem (C:\Users\phil\dev\kleinfreund.de\node_modules\@11ty\eleventy-utils\src\Merge.js:38:25)
[11ty] at getMergedItem (C:\Users\phil\dev\kleinfreund.de\node_modules\@11ty\eleventy-utils\src\Merge.js:38:27)
[11ty] at getMergedItem (C:\Users\phil\dev\kleinfreund.de\node_modules\@11ty\eleventy-utils\src\Merge.js:38:27)
[11ty] at Merge (C:\Users\phil\dev\kleinfreund.de\node_modules\@11ty\eleventy-utils\src\Merge.js:75:12)
[11ty] at #getGlobalData (file:///C:/Users/phil/dev/kleinfreund.de/node_modules/@11ty/eleventy/src/Data/TemplateData.js:364:26)
[11ty] Wrote 0 files in 0.03 seconds (v3.0.0)
[11ty] Watching…
Turning on debug mode for Eleventy*
, the source of the issue points to global data files:
Eleventy:FastGlobManager Glob search ('global-data') searching for: [ './src/_data/**/*.{json,mjs,cjs,js}' ] +39ms
Eleventy:TemplateData Found global data file ./src/_data/metadata.json and adding as: metadata +10ms
Eleventy:TemplateData Found global data file ./src/_data/eleventy.js and adding as: eleventy +0ms
[11ty] Problem writing Eleventy templates:
Eleventy:EleventyErrorHandler Full error object: "TypeError: Cannot assign to read only property 'source' of object '#<Object>'\n" + ' at getMergedItem (C:\\Users\\phil\\dev\\kleinfreund.de\\node_modules\\@11ty\\eleventy-utils\\src\\Merge.js:38:25)\n' + ' at getMergedItem (C:\\Users\\phil\\dev\\kleinfreund.de\\node_modules\\@11ty\\eleventy-utils\\src\\Merge.js:38:27)\n' + ' at getMergedItem (C:\\Users\\phil\\dev\\kleinfreund.de\\node_modules\\@11ty\\eleventy-utils\\src\\Merge.js:38:27)\n' + ' at Merge (C:\\Users\\phil\\dev\\kleinfreund.de\\node_modules\\@11ty\\eleventy-utils\\src\\Merge.js:75:12)\n' + ' at #getGlobalData (file:///C:/Users/phil/dev/kleinfreund.de/node_modules/@11ty/eleventy/src/Data/TemplateData.js:364:26)' +0ms
[11ty] Cannot assign to read only property 'source' of object '#<Object>' (via TypeError)
Eleventy:EleventyErrorHandler (error stack): TypeError: Cannot assign to read only property 'source' of object '#<Object>'
Eleventy:EleventyErrorHandler at getMergedItem (C:\Users\phil\dev\kleinfreund.de\node_modules\@11ty\eleventy-utils\src\Merge.js:38:25)
Eleventy:EleventyErrorHandler at getMergedItem (C:\Users\phil\dev\kleinfreund.de\node_modules\@11ty\eleventy-utils\src\Merge.js:38:27)
Eleventy:EleventyErrorHandler at getMergedItem (C:\Users\phil\dev\kleinfreund.de\node_modules\@11ty\eleventy-utils\src\Merge.js:38:27)
Eleventy:EleventyErrorHandler at Merge (C:\Users\phil\dev\kleinfreund.de\node_modules\@11ty\eleventy-utils\src\Merge.js:75:12)
Eleventy:EleventyErrorHandler at #getGlobalData (file:///C:/Users/phil/dev/kleinfreund.de/node_modules/@11ty/eleventy/src/Data/TemplateData.js:364:26) +1ms
Deleting src/_data/eleventy.js
resolves the issue.
The contents of that file are:
export default {
isProduction: process.env.NODE_ENV === 'production',
};
The contents don't seem to matter (e.g. removing the access to process
doesn't resolve the issue).
Reproduction steps
-
Set up the reproduction project.
git clone https://github.com/kleinfreund/kleinfreund.de.git cd kleinfreund.de git reset --hard https://github.com/kleinfreund/kleinfreund.de/commit/79044f8f1eed33ca7c2aff24c97d4cfbb7688888 # The commit in which I upgraded to Eleventy 3.0.0 npm install
-
Run
npm start
and make a file change in a watched file (e.g.src/_includes/layouts/base.liquid
). -
Observe the watcher output for result 1. Stop the
npm start
script. -
For working behavior comparison: Delete
src/_data/eleventy.js
. -
Repeat step 2 and observe the watcher output for result 2. Stop the
npm start
script. -
For working behavior comparison: Run:
git reset --hard https://github.com/kleinfreund/kleinfreund.de/commit/a6b5e66f03f651050701e4935d53cc291ad56a3b # The commit right before I upgraded to Eleventy 3.0.0 npm install
-
Repeat step 2 and observe the watcher output for result 3. Stop the
npm start
script. -
Delete the reproduction project.
cd .. rm -rf kleinfreund.de
Expected behavior
Result 1, 2, and 3 show no errors after the file change.
The actual behavior, however, shows an error in result 1. Result 2 and 3 show the working behavior.
Reproduction URL
https://github.com/kleinfreund/kleinfreund.de
Screenshots
No response