Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Tried to use templateContent too early in eleventy 3.0.0-alpha.3 on rerender #3136

Open
Snapstromegon opened this issue Dec 23, 2023 · 11 comments

Comments

@Snapstromegon
Copy link
Member

Operating system

Windows 11 Pro

Eleventy

3.0.0-alpha.3

Describe the bug

This description is based on my real blog. I wasn't yet able to create a reduced example. If I manage to create one, I'll update it here. If someone else is able to create one, post them too!

When serving a project and changing a file afterwards, the build fails with this error:

[11ty] File changed: src\webdev-sins\2023-12-23-building-on-feelings.md
[11ty] Unhandled rejection in promise: (more in DEBUG output)
[11ty] Tried to use templateContent too early on ./src/webdev-sins/2023-12-23-building-on-feelings.md (via TemplateContentPrematureUseError)
[11ty]
[11ty] Original error stack trace: TemplateContentPrematureUseError: Tried to use templateContent too early on ./src/webdev-sins/2023-12-23-building-on-feelings.md 
[11ty]     at Object.get [as templateContent] (file:///D:/Documents/DEV/hoeser.dev/node_modules/@11ty/eleventy/src/Template.js:619:14)
[11ty]     at Object.memberLookup (D:\Documents\DEV\hoeser.dev\node_modules\nunjucks\src\runtime.js:201:17)
[11ty]     at eval (eval at _compile (D:\Documents\DEV\hoeser.dev\node_modules\nunjucks\src\environment.js:527:18), <anonymous>:58:59)
[11ty]     at iterCallback (D:\Documents\DEV\hoeser.dev\node_modules\nunjucks\src\runtime.js:236:11)
[11ty]     at next (D:\Documents\DEV\hoeser.dev\node_modules\nunjucks\src\lib.js:258:7)
[11ty]     at eval (eval at _compile (D:\Documents\DEV\hoeser.dev\node_modules\nunjucks\src\environment.js:527:18), <anonymous>:62:1)
[11ty]     at D:\Documents\DEV\hoeser.dev\node_modules\@11ty\eleventy-plugin-rss\.eleventy.js:29:7
[11ty]     at process.processTicksAndRejections (node:internal/process/task_queues:95:5)

Reproduction steps

  1. Clone my blog repo from here: https://github.com/Snapstromegon/hoeser.dev
  2. Checkout this commit: 0a7c573ae2ba6358b43fd35b948fe5570c557545 (the bug was introduced here, when I switched to v3)
  3. Install and run npm run serve
  4. Edit any src/blog/*.md entry or src/webdev-sins/*.md file

Expected behavior

The page rebuilds successfully.

Reproduction URL

No response

Screenshots

No response

@Snapstromegon
Copy link
Member Author

I could find that this has to do with my src/feed.xml.njk, which generates a custom atom feed and is based on https://www.11ty.dev/docs/plugins/rss/.
It includes this line:

<content type="html">{{ post.templateContent | htmlToAbsoluteUrls(absolutePostUrl) }}</content>

which seems to trigger this issue. Did something change in the order of template execution?

@jamesdoc
Copy link

jamesdoc commented Dec 27, 2023

I've experienced this too on both 3.0.0-alpha.2 and 3.0.0-alpha.3.

Removing htmlToAbsoluteUrls restores the expected functionality.


Update on this: I am now unable to reproduce this issue… without seeming to have changed anything.

@uncenter
Copy link
Contributor

uncenter commented Jan 10, 2024

I just started to upgrade and I am now getting this too... 👀

@ghost
Copy link

ghost commented Jan 12, 2024

Hey, I've been having the same issue for almost a month, and I'm on v2. My bug report (and a link to an MWE) is here: #3146

My issue seemed to be related to my RSS feed as well, at least at first, since I'd get the error to occur if I was editing any Markdown files. However, I've even had the error happen when I'd edit an HTML page that has nothing to do with my RSS feed or Markdown files (that I'm aware of, at least).

Worst part is, the issue is inconsistent when it comes to reproducing, at least on different computers. I've had uncenter and aankhen over at the Eleventy Discord channel help me figure this out all this time, and between the three of us, we'd have the error happen with different files, or inconsistently with the same file. It's weird.

EDIT: And here's my Discord topic on this weird bug, if anyone wants to chime in there about this issue: https://discord.com/channels/741017160297611315/1182433386111971338

@gunnarsson
Copy link

gunnarsson commented Feb 28, 2024

I'm on alpha5 and just started seeing this error. It seems to be triggered by the rss plugin for me as well, and I also have the <description>{{ post.templateContent | htmlToAbsoluteUrls(absolutePostUrl) }}</description> line.

I haven't seen the error previously, before or after upgrading to 3.0.0. If I delete my _site folder and start the dev server the entire site generates without problem, but if I then just save a markdown file it triggers the error. It doesn't seem to matter which post I'm saving.

[11ty] Tried to use templateContent too early on ./posts/bicycle-commuting-premiere.md (via TemplateContentPrematureUseError)
[11ty] 
[11ty] Original error stack trace: TemplateContentPrematureUseError: Tried to use templateContent too early on ./posts/bicycle-commuting-premiere.md
[11ty]     at Object.get [as templateContent] (file:///.../node_modules/@11ty/eleventy/src/Template.js:622:14)
[11ty]     at Object.memberLookup (/.../node_modules/nunjucks/src/runtime.js:201:17)
[11ty]     at eval (eval at _compile (/.../node_modules/nunjucks/src/environment.js:527:18), <anonymous>:47:59)
[11ty]     at iterCallback (/.../node_modules/nunjucks/src/runtime.js:236:11)
[11ty]     at next (/.../node_modules/nunjucks/src/lib.js:258:7)
[11ty]     at eval (eval at _compile (/.../node_modules/nunjucks/src/environment.js:527:18), <anonymous>:57:1)
[11ty]     at /.../node_modules/@11ty/eleventy-plugin-rss/.eleventy.js:29:7
[11ty]     at process.processTicksAndRejections (node:internal/process/task_queues:95:5)

@yogensia
Copy link

Having the same issue since I upgraded to v3 (I went straight to alpha-5 from an old 0.2 version). Running on Win11, node 20.11.0 and latest version of @11ty/eleventy-plugin-rss, 1.2.0, which seems to be the origin of the issue for me as well.

Here's a full log with DEBUG=eleventy* after editing a markdown file with --serve in case that helps give more context. Only thing that stands out to me is that undefined near the top: Eleventy Input (File): undefined, not sure if that's normal though.

Sorry if the wall of text is too much, if so please feel free to mention me and I'll change it to a gist link or something!

[11ty] File changed: src\blog\2021-04-20-toolbag-tips.md
  Eleventy Restarting +13s
  Eleventy:TemplatePassthroughManager Resetting counts to 0 +13s
  Eleventy:EleventyFiles .gitignore,.eleventyignore,src/.eleventyignore ignoring: ./node_modules/** +15s
  Eleventy:EleventyFiles .gitignore,.eleventyignore,src/.eleventyignore ignoring: ./dist/** +0ms
  Eleventy:EleventyFiles .gitignore,.eleventyignore,src/.eleventyignore ignoring: ./.cache/** +0ms
  Eleventy:EleventyFiles .gitignore,.eleventyignore,src/.eleventyignore ignoring: ./ftp-config.json +1ms
  Eleventy:EleventyFiles .gitignore,.eleventyignore,src/.eleventyignore ignoring: ./.env +0ms
  Eleventy:EleventyFiles .gitignore,.eleventyignore,src/.eleventyignore ignoring: ./.log +0ms
  Eleventy:EleventyFiles .gitignore,.eleventyignore,src/.eleventyignore ignoring: ./**.DS_Store* +0ms
  Eleventy:EleventyFiles .gitignore,.eleventyignore,src/.eleventyignore ignoring: ./ehthumbs.db +0ms
  Eleventy:EleventyFiles .gitignore,.eleventyignore,src/.eleventyignore ignoring: ./Icon? +0ms
  Eleventy:EleventyFiles .gitignore,.eleventyignore,src/.eleventyignore ignoring: ./Thumbs.db +0ms
  Eleventy:EleventyFiles .gitignore,.eleventyignore,src/.eleventyignore ignoring: ./._* +0ms
  Eleventy:EleventyFiles .gitignore,.eleventyignore,src/.eleventyignore ignoring: ./**/.sass-cache +0ms
  Eleventy:EleventyFiles .gitignore,.eleventyignore,src/.eleventyignore ignoring: ./**/.sass-cache/* +0ms
  Eleventy:EleventyFiles .gitignore,.eleventyignore,src/.eleventyignore ignoring: ./**/.map +0ms
  Eleventy:EleventyFiles .gitignore,.eleventyignore,src/.eleventyignore ignoring: ./.github +0ms
  Eleventy:EleventyFiles .gitignore,.eleventyignore,src/.eleventyignore ignoring: ./src/drafts/** +1ms
  Eleventy:TemplatePassthroughManager Resetting counts to 0 +5ms
  Eleventy:EleventyFiles .gitignore,.eleventyignore,src/.eleventyignore ignoring: ./node_modules/** +3ms
  Eleventy:EleventyFiles .gitignore,.eleventyignore,src/.eleventyignore ignoring: ./dist/** +0ms
  Eleventy:EleventyFiles .gitignore,.eleventyignore,src/.eleventyignore ignoring: ./.cache/** +0ms
  Eleventy:EleventyFiles .gitignore,.eleventyignore,src/.eleventyignore ignoring: ./ftp-config.json +0ms
  Eleventy:EleventyFiles .gitignore,.eleventyignore,src/.eleventyignore ignoring: ./.env +0ms
  Eleventy:EleventyFiles .gitignore,.eleventyignore,src/.eleventyignore ignoring: ./.log +0ms
  Eleventy:EleventyFiles .gitignore,.eleventyignore,src/.eleventyignore ignoring: ./**.DS_Store* +0ms
  Eleventy:EleventyFiles .gitignore,.eleventyignore,src/.eleventyignore ignoring: ./ehthumbs.db +0ms
  Eleventy:EleventyFiles .gitignore,.eleventyignore,src/.eleventyignore ignoring: ./Icon? +0ms
  Eleventy:EleventyFiles .gitignore,.eleventyignore,src/.eleventyignore ignoring: ./Thumbs.db +1ms
  Eleventy:EleventyFiles .gitignore,.eleventyignore,src/.eleventyignore ignoring: ./._* +0ms
  Eleventy:EleventyFiles .gitignore,.eleventyignore,src/.eleventyignore ignoring: ./**/.sass-cache +0ms
  Eleventy:EleventyFiles .gitignore,.eleventyignore,src/.eleventyignore ignoring: ./**/.sass-cache/* +0ms
  Eleventy:EleventyFiles .gitignore,.eleventyignore,src/.eleventyignore ignoring: ./**/.map +0ms
  Eleventy:EleventyFiles .gitignore,.eleventyignore,src/.eleventyignore ignoring: ./.github +0ms
  Eleventy:EleventyFiles .gitignore,.eleventyignore,src/.eleventyignore ignoring: ./src/drafts/** +0ms
  Eleventy Directories:
  Eleventy Input (Dir): src
  Eleventy Input (File): undefined
  Eleventy Data: src/_data
  Eleventy Includes: src/_includes
  Eleventy Layouts: src/_layouts
  Eleventy Output: dist
  Eleventy Template Formats: liquid,md,njk,html,11ty.js
  Eleventy Verbose Output: false +9ms
  Eleventy:EleventyFiles Searching for: [ './src/**/*.{liquid,md,njk,html,11ty.js,11ty.cjs,11ty.mjs}' ] +1ms
  Eleventy:FastGlobManager Glob search ('templates') searching for: [ './src/**/*.{liquid,md,njk,html,11ty.js,11ty.cjs,11ty.mjs}' ] +13s
  Eleventy:FastGlobManager Glob search ('templates') ignoring: [ 'node_modules/**',  'dist/**', '.cache/**',        'ftp-config.json', '.env',             '.log', '**.DS_Store*',     'ehthumbs.db', 'Icon?',            'Thumbs.db', '._*',              '**/.sass-cache', '**/.sass-cache/*', '**/.map', '.github',          'src/drafts/**', 'src/_includes/**', 'src/_layouts/**', 'src/_data/**',     '**/node_modules/**', '.git/**' ] +1ms
  Eleventy:TemplatePassthroughManager TemplatePassthrough copy started. +5ms
  Eleventy:TemplatePassthroughManager `addPassthroughCopy` config API paths: { 'src/js': { outputPath: true, copyOptions: {} }, 'src/assets/icons': { outputPath: true, copyOptions: {} }, 'src/assets/images': { outputPath: true, copyOptions: {} }, 'src/site.webmanifest': { outputPath: true, copyOptions: {} }, 'src/.htaccess': { outputPath: true, copyOptions: {} }, 'src/humans.txt': { outputPath: true, copyOptions: {} } } +0ms
  Eleventy:TemplatePassthroughManager `addPassthroughCopy` config API normalized paths: [ { inputPath: './src/js', outputPath: true, copyOptions: {} }, { inputPath: './src/assets/icons', outputPath: true, copyOptions: {} }, { inputPath: './src/assets/images', outputPath: true, copyOptions: {} }, { inputPath: './src/site.webmanifest', outputPath: true, copyOptions: {} }, { inputPath: './src/.htaccess', outputPath: true, copyOptions: {} }, { inputPath: './src/humans.txt', outputPath: true, copyOptions: {} } ] +0ms
  Eleventy:TemplatePassthroughManager TemplatePassthrough copying from config: { inputPath: './src/js', outputPath: true, copyOptions: {} } +1ms
  Eleventy:TemplatePassthroughManager TemplatePassthrough copying from config: { inputPath: './src/assets/icons', outputPath: true, copyOptions: {} } +0ms
  Eleventy:TemplatePassthroughManager TemplatePassthrough copying from config: { inputPath: './src/assets/images', outputPath: true, copyOptions: {} } +0ms
  Eleventy:TemplatePassthroughManager TemplatePassthrough copying from config: { inputPath: './src/site.webmanifest', outputPath: true, copyOptions: {} } +0ms
  Eleventy:TemplatePassthroughManager TemplatePassthrough copying from config: { inputPath: './src/.htaccess', outputPath: true, copyOptions: {} } +0ms
  Eleventy:TemplatePassthroughManager TemplatePassthrough copying from config: { inputPath: './src/humans.txt', outputPath: true, copyOptions: {} } +0ms
  Eleventy:TemplatePassthrough Copying './src/js' +15s
  Eleventy:TemplatePassthrough Copying './src/assets/icons' +0ms
  Eleventy:TemplatePassthrough Copying './src/assets/images' +1ms
  Eleventy:TemplatePassthrough Copying './src/site.webmanifest' +0ms
  Eleventy:TemplatePassthrough Copying './src/.htaccess' +0ms
  Eleventy:TemplatePassthrough Copying './src/humans.txt' +0ms
  Eleventy:TemplateData Using [ '.11tydata', '' ] suffixes to find data files. +15s
  Eleventy:TemplateData getLocalDataPaths('./src/403.md'): [ './src/403.11tydata.js', './src/403.11tydata.cjs', './src/403.11tydata.mjs', './src/403.11tydata.json', './src/403.json', './src/src.11tydata.js', './src/src.11tydata.cjs', './src/src.11tydata.mjs', './src/src.11tydata.json', './src/src.json' ] +0ms
  Eleventy:TemplateWriter ./src/403.md adding to template map. +14s
  Eleventy:TemplateData Using [ '.11tydata', '' ] suffixes to find data files. +1ms
  Eleventy:TemplateData getLocalDataPaths('./src/404.md'): [ './src/404.11tydata.js', './src/404.11tydata.cjs', './src/404.11tydata.mjs', './src/404.11tydata.json', './src/404.json', './src/src.11tydata.js', './src/src.11tydata.cjs', './src/src.11tydata.mjs', './src/src.11tydata.json', './src/src.json' ] +0ms
  Eleventy:TemplateWriter ./src/404.md adding to template map. +0ms
  Eleventy:TemplateData Using [ '.11tydata', '' ] suffixes to find data files. +0ms
  Eleventy:TemplateData getLocalDataPaths('./src/about.md'): [ './src/about.11tydata.js', './src/about.11tydata.cjs', './src/about.11tydata.mjs', './src/about.11tydata.json', './src/about.json', './src/src.11tydata.js', './src/src.11tydata.cjs', './src/src.11tydata.mjs', './src/src.11tydata.json', './src/src.json' ] +0ms
  Eleventy:TemplateWriter ./src/about.md adding to template map. +0ms
  Eleventy:TemplateData Using [ '.11tydata', '' ] suffixes to find data files. +1ms
  Eleventy:TemplateData getLocalDataPaths('./src/blog.md'): [ './src/blog.11tydata.js', './src/blog.11tydata.cjs', './src/blog.11tydata.mjs', './src/blog.11tydata.json', './src/blog.json', './src/src.11tydata.js', './src/src.11tydata.cjs', './src/src.11tydata.mjs', './src/src.11tydata.json', './src/src.json' ] +0ms
  Eleventy:TemplateWriter ./src/blog.md adding to template map. +1ms
  Eleventy:TemplateData Using [ '.11tydata', '' ] suffixes to find data files. +0ms
  Eleventy:TemplateData getLocalDataPaths('./src/cookies.md'): [ './src/cookies.11tydata.js', './src/cookies.11tydata.cjs', './src/cookies.11tydata.mjs', './src/cookies.11tydata.json', './src/cookies.json', './src/src.11tydata.js', './src/src.11tydata.cjs', './src/src.11tydata.mjs', './src/src.11tydata.json', './src/src.json' ] +0ms
  Eleventy:TemplateWriter ./src/cookies.md adding to template map. +1ms
  Eleventy:TemplateData Using [ '.11tydata', '' ] suffixes to find data files. +1ms
  Eleventy:TemplateData getLocalDataPaths('./src/disclaimer.md'): [ './src/disclaimer.11tydata.js', './src/disclaimer.11tydata.cjs', './src/disclaimer.11tydata.mjs', './src/disclaimer.11tydata.json', './src/disclaimer.json', './src/src.11tydata.js', './src/src.11tydata.cjs', './src/src.11tydata.mjs', './src/src.11tydata.json', './src/src.json' ] +0ms
  Eleventy:TemplateWriter ./src/disclaimer.md adding to template map. +0ms
  Eleventy:TemplateData Using [ '.11tydata', '' ] suffixes to find data files. +0ms
  Eleventy:TemplateData getLocalDataPaths('./src/feed.njk'): [ './src/feed.11tydata.js', './src/feed.11tydata.cjs', './src/feed.11tydata.mjs', './src/feed.11tydata.json', './src/feed.json', './src/src.11tydata.js', './src/src.11tydata.cjs', './src/src.11tydata.mjs', './src/src.11tydata.json', './src/src.json' ] +0ms
  Eleventy:TemplateWriter ./src/feed.njk adding to template map. +1ms
  Eleventy:TemplateData Using [ '.11tydata', '' ] suffixes to find data files. +1ms
  Eleventy:TemplateData getLocalDataPaths('./src/index.md'): [ './src/index.11tydata.js', './src/index.11tydata.cjs', './src/index.11tydata.mjs', './src/index.11tydata.json', './src/index.json', './src/src.11tydata.js', './src/src.11tydata.cjs', './src/src.11tydata.mjs', './src/src.11tydata.json', './src/src.json' ] +0ms
  Eleventy:TemplateWriter ./src/index.md adding to template map. +0ms
  Eleventy:TemplateData Using [ '.11tydata', '' ] suffixes to find data files. +0ms
  Eleventy:TemplateData getLocalDataPaths('./src/portfolio.md'): [ './src/portfolio.11tydata.js', './src/portfolio.11tydata.cjs', './src/portfolio.11tydata.mjs', './src/portfolio.11tydata.json', './src/portfolio.json', './src/src.11tydata.js', './src/src.11tydata.cjs', './src/src.11tydata.mjs', './src/src.11tydata.json', './src/src.json' ] +0ms
  Eleventy:TemplateWriter ./src/portfolio.md adding to template map. +0ms
  Eleventy:TemplateData Using [ '.11tydata', '' ] suffixes to find data files. +0ms
  Eleventy:TemplateData getLocalDataPaths('./src/privacy.md'): [ './src/privacy.11tydata.js', './src/privacy.11tydata.cjs', './src/privacy.11tydata.mjs', './src/privacy.11tydata.json', './src/privacy.json', './src/src.11tydata.js', './src/src.11tydata.cjs', './src/src.11tydata.mjs', './src/src.11tydata.json', './src/src.json' ] +1ms
  Eleventy:TemplateWriter ./src/privacy.md adding to template map. +1ms
  Eleventy:TemplateData Using [ '.11tydata', '' ] suffixes to find data files. +0ms
  Eleventy:TemplateData getLocalDataPaths('./src/sitemap.njk'): [ './src/sitemap.11tydata.js', './src/sitemap.11tydata.cjs', './src/sitemap.11tydata.mjs', './src/sitemap.11tydata.json', './src/sitemap.json', './src/src.11tydata.js', './src/src.11tydata.cjs', './src/src.11tydata.mjs', './src/src.11tydata.json', './src/src.json' ] +0ms
  Eleventy:TemplateWriter ./src/sitemap.njk adding to template map. +0ms
  Eleventy:TemplateData Using [ '.11tydata', '' ] suffixes to find data files. +0ms
  Eleventy:TemplateData getLocalDataPaths('./src/blog/2021-04-20-toolbag-tips.md'): [ './src/blog/2021-04-20-toolbag-tips.11tydata.js', './src/blog/2021-04-20-toolbag-tips.11tydata.cjs', './src/blog/2021-04-20-toolbag-tips.11tydata.mjs', './src/blog/2021-04-20-toolbag-tips.11tydata.json', './src/blog/2021-04-20-toolbag-tips.json', './src/blog/blog.11tydata.js', './src/blog/blog.11tydata.cjs', './src/blog/blog.11tydata.mjs', './src/blog/blog.11tydata.json', './src/blog/blog.json', './src/src.11tydata.js', './src/src.11tydata.cjs', './src/src.11tydata.mjs', './src/src.11tydata.json', './src/src.json' ] +0ms
  Eleventy:TemplateWriter ./src/blog/2021-04-20-toolbag-tips.md adding to template map. +1ms
  Eleventy:TemplateData Using [ '.11tydata', '' ] suffixes to find data files. +1ms
  Eleventy:TemplateData getLocalDataPaths('./src/blog/2021-07-06-discord-bot-part-1.md'): [ './src/blog/2021-07-06-discord-bot-part-1.11tydata.js', './src/blog/2021-07-06-discord-bot-part-1.11tydata.cjs', './src/blog/2021-07-06-discord-bot-part-1.11tydata.mjs', './src/blog/2021-07-06-discord-bot-part-1.11tydata.json', './src/blog/2021-07-06-discord-bot-part-1.json', './src/blog/blog.11tydata.js', './src/blog/blog.11tydata.cjs', './src/blog/blog.11tydata.mjs', './src/blog/blog.11tydata.json', './src/blog/blog.json', './src/src.11tydata.js', './src/src.11tydata.cjs', './src/src.11tydata.mjs', './src/src.11tydata.json', './src/src.json' ] +0ms
  Eleventy:TemplateWriter ./src/blog/2021-07-06-discord-bot-part-1.md adding to template map. +0ms
  Eleventy:TemplateData Using [ '.11tydata', '' ] suffixes to find data files. +1ms
  Eleventy:TemplateData getLocalDataPaths('./src/portfolio/axe-the-shining.md'): [ './src/portfolio/axe-the-shining.11tydata.js', './src/portfolio/axe-the-shining.11tydata.cjs', './src/portfolio/axe-the-shining.11tydata.mjs', './src/portfolio/axe-the-shining.11tydata.json', './src/portfolio/axe-the-shining.json', './src/portfolio/portfolio.11tydata.js', './src/portfolio/portfolio.11tydata.cjs', './src/portfolio/portfolio.11tydata.mjs', './src/portfolio/portfolio.11tydata.json', './src/portfolio/portfolio.json', './src/src.11tydata.js', './src/src.11tydata.cjs', './src/src.11tydata.mjs', './src/src.11tydata.json', './src/src.json' ] +0ms
  Eleventy:TemplateWriter ./src/portfolio/axe-the-shining.md adding to template map. +1ms
  Eleventy:TemplateData Using [ '.11tydata', '' ] suffixes to find data files. +0ms
  Eleventy:TemplateData getLocalDataPaths('./src/portfolio/brush-axe.md'): [ './src/portfolio/brush-axe.11tydata.js', './src/portfolio/brush-axe.11tydata.cjs', './src/portfolio/brush-axe.11tydata.mjs', './src/portfolio/brush-axe.11tydata.json', './src/portfolio/brush-axe.json', './src/portfolio/portfolio.11tydata.js', './src/portfolio/portfolio.11tydata.cjs', './src/portfolio/portfolio.11tydata.mjs', './src/portfolio/portfolio.11tydata.json', './src/portfolio/portfolio.json', './src/src.11tydata.js', './src/src.11tydata.cjs', './src/src.11tydata.mjs', './src/src.11tydata.json', './src/src.json' ] +0ms
  Eleventy:TemplateWriter ./src/portfolio/brush-axe.md adding to template map. +0ms
  Eleventy:TemplateData Using [ '.11tydata', '' ] suffixes to find data files. +1ms
  Eleventy:TemplateData getLocalDataPaths('./src/portfolio/chess-set.md'): [ './src/portfolio/chess-set.11tydata.js', './src/portfolio/chess-set.11tydata.cjs', './src/portfolio/chess-set.11tydata.mjs', './src/portfolio/chess-set.11tydata.json', './src/portfolio/chess-set.json', './src/portfolio/portfolio.11tydata.js', './src/portfolio/portfolio.11tydata.cjs', './src/portfolio/portfolio.11tydata.mjs', './src/portfolio/portfolio.11tydata.json', './src/portfolio/portfolio.json', './src/src.11tydata.js', './src/src.11tydata.cjs', './src/src.11tydata.mjs', './src/src.11tydata.json', './src/src.json' ] +0ms
  Eleventy:TemplateWriter ./src/portfolio/chess-set.md adding to template map. +1ms
  Eleventy:TemplateData Using [ '.11tydata', '' ] suffixes to find data files. +0ms
  Eleventy:TemplateData getLocalDataPaths('./src/portfolio/excalibur.md'): [ './src/portfolio/excalibur.11tydata.js', './src/portfolio/excalibur.11tydata.cjs', './src/portfolio/excalibur.11tydata.mjs', './src/portfolio/excalibur.11tydata.json', './src/portfolio/excalibur.json', './src/portfolio/portfolio.11tydata.js', './src/portfolio/portfolio.11tydata.cjs', './src/portfolio/portfolio.11tydata.mjs', './src/portfolio/portfolio.11tydata.json', './src/portfolio/portfolio.json', './src/src.11tydata.js', './src/src.11tydata.cjs', './src/src.11tydata.mjs', './src/src.11tydata.json', './src/src.json' ] +0ms
  Eleventy:TemplateWriter ./src/portfolio/excalibur.md adding to template map. +1ms
  Eleventy:TemplateData Using [ '.11tydata', '' ] suffixes to find data files. +1ms
  Eleventy:TemplateData getLocalDataPaths('./src/portfolio/hardedge.md'): [ './src/portfolio/hardedge.11tydata.js', './src/portfolio/hardedge.11tydata.cjs', './src/portfolio/hardedge.11tydata.mjs', './src/portfolio/hardedge.11tydata.json', './src/portfolio/hardedge.json', './src/portfolio/portfolio.11tydata.js', './src/portfolio/portfolio.11tydata.cjs', './src/portfolio/portfolio.11tydata.mjs', './src/portfolio/portfolio.11tydata.json', './src/portfolio/portfolio.json', './src/src.11tydata.js', './src/src.11tydata.cjs', './src/src.11tydata.mjs', './src/src.11tydata.json', './src/src.json' ] +0ms
  Eleventy:TemplateWriter ./src/portfolio/hardedge.md adding to template map. +0ms
  Eleventy:TemplateData Using [ '.11tydata', '' ] suffixes to find data files. +0ms
  Eleventy:TemplateData getLocalDataPaths('./src/portfolio/harley-quinn-bat.md'): [ './src/portfolio/harley-quinn-bat.11tydata.js', './src/portfolio/harley-quinn-bat.11tydata.cjs', './src/portfolio/harley-quinn-bat.11tydata.mjs', './src/portfolio/harley-quinn-bat.11tydata.json', './src/portfolio/harley-quinn-bat.json', './src/portfolio/portfolio.11tydata.js', './src/portfolio/portfolio.11tydata.cjs', './src/portfolio/portfolio.11tydata.mjs', './src/portfolio/portfolio.11tydata.json', './src/portfolio/portfolio.json', './src/src.11tydata.js', './src/src.11tydata.cjs', './src/src.11tydata.mjs', './src/src.11tydata.json', './src/src.json' ] +0ms
  Eleventy:TemplateWriter ./src/portfolio/harley-quinn-bat.md adding to template map. +0ms
  Eleventy:TemplateData Using [ '.11tydata', '' ] suffixes to find data files. +1ms
  Eleventy:TemplateData getLocalDataPaths('./src/portfolio/l4d-adrenaline.md'): [ './src/portfolio/l4d-adrenaline.11tydata.js', './src/portfolio/l4d-adrenaline.11tydata.cjs', './src/portfolio/l4d-adrenaline.11tydata.mjs', './src/portfolio/l4d-adrenaline.11tydata.json', './src/portfolio/l4d-adrenaline.json', './src/portfolio/portfolio.11tydata.js', './src/portfolio/portfolio.11tydata.cjs', './src/portfolio/portfolio.11tydata.mjs', './src/portfolio/portfolio.11tydata.json', './src/portfolio/portfolio.json', './src/src.11tydata.js', './src/src.11tydata.cjs', './src/src.11tydata.mjs', './src/src.11tydata.json', './src/src.json' ] +0ms
  Eleventy:TemplateWriter ./src/portfolio/l4d-adrenaline.md adding to template map. +1ms
  Eleventy:TemplateData Using [ '.11tydata', '' ] suffixes to find data files. +0ms
  Eleventy:TemplateData getLocalDataPaths('./src/portfolio/l4d-pipebomb.md'): [ './src/portfolio/l4d-pipebomb.11tydata.js', './src/portfolio/l4d-pipebomb.11tydata.cjs', './src/portfolio/l4d-pipebomb.11tydata.mjs', './src/portfolio/l4d-pipebomb.11tydata.json', './src/portfolio/l4d-pipebomb.json', './src/portfolio/portfolio.11tydata.js', './src/portfolio/portfolio.11tydata.cjs', './src/portfolio/portfolio.11tydata.mjs', './src/portfolio/portfolio.11tydata.json', './src/portfolio/portfolio.json', './src/src.11tydata.js', './src/src.11tydata.cjs',
 './src/src.11tydata.mjs', './src/src.11tydata.json', './src/src.json' ] +0ms
  Eleventy:TemplateWriter ./src/portfolio/l4d-pipebomb.md adding to template map. +0ms
  Eleventy:TemplateData Using [ '.11tydata', '' ] suffixes to find data files. +1ms
  Eleventy:TemplateData getLocalDataPaths('./src/portfolio/mad-can.md'): [ './src/portfolio/mad-can.11tydata.js', './src/portfolio/mad-can.11tydata.cjs', './src/portfolio/mad-can.11tydata.mjs', './src/portfolio/mad-can.11tydata.json', './src/portfolio/mad-can.json', './src/portfolio/portfolio.11tydata.js', './src/portfolio/portfolio.11tydata.cjs', './src/portfolio/portfolio.11tydata.mjs', './src/portfolio/portfolio.11tydata.json', './src/portfolio/portfolio.json', './src/src.11tydata.js', './src/src.11tydata.cjs', './src/src.11tydata.mjs', './src/src.11tydata.json', './src/src.json' ] +0ms
  Eleventy:TemplateWriter ./src/portfolio/mad-can.md adding to template map. +1ms
  Eleventy:TemplateData Using [ '.11tydata', '' ] suffixes to find data files. +0ms
  Eleventy:TemplateData getLocalDataPaths('./src/portfolio/master-sword.md'): [ './src/portfolio/master-sword.11tydata.js', './src/portfolio/master-sword.11tydata.cjs', './src/portfolio/master-sword.11tydata.mjs', './src/portfolio/master-sword.11tydata.json', './src/portfolio/master-sword.json', './src/portfolio/portfolio.11tydata.js', './src/portfolio/portfolio.11tydata.cjs', './src/portfolio/portfolio.11tydata.mjs', './src/portfolio/portfolio.11tydata.json', './src/portfolio/portfolio.json', './src/src.11tydata.js', './src/src.11tydata.cjs',
 './src/src.11tydata.mjs', './src/src.11tydata.json', './src/src.json' ] +0ms
  Eleventy:TemplateWriter ./src/portfolio/master-sword.md adding to template map. +0ms
  Eleventy:TemplateData Using [ '.11tydata', '' ] suffixes to find data files. +1ms
  Eleventy:TemplateData getLocalDataPaths('./src/portfolio/modular-katanas.md'): [ './src/portfolio/modular-katanas.11tydata.js', './src/portfolio/modular-katanas.11tydata.cjs', './src/portfolio/modular-katanas.11tydata.mjs', './src/portfolio/modular-katanas.11tydata.json', './src/portfolio/modular-katanas.json', './src/portfolio/portfolio.11tydata.js', './src/portfolio/portfolio.11tydata.cjs', './src/portfolio/portfolio.11tydata.mjs', './src/portfolio/portfolio.11tydata.json', './src/portfolio/portfolio.json', './src/src.11tydata.js', './src/src.11tydata.cjs', './src/src.11tydata.mjs', './src/src.11tydata.json', './src/src.json' ] +0ms
  Eleventy:TemplateWriter ./src/portfolio/modular-katanas.md adding to template map. +1ms
  Eleventy:TemplateData Using [ '.11tydata', '' ] suffixes to find data files. +0ms
  Eleventy:TemplateData getLocalDataPaths('./src/portfolio/nuka-cola-cap.md'): [ './src/portfolio/nuka-cola-cap.11tydata.js', './src/portfolio/nuka-cola-cap.11tydata.cjs', './src/portfolio/nuka-cola-cap.11tydata.mjs', './src/portfolio/nuka-cola-cap.11tydata.json', './src/portfolio/nuka-cola-cap.json', './src/portfolio/portfolio.11tydata.js', './src/portfolio/portfolio.11tydata.cjs', './src/portfolio/portfolio.11tydata.mjs', './src/portfolio/portfolio.11tydata.json', './src/portfolio/portfolio.json', './src/src.11tydata.js', './src/src.11tydata.cjs', './src/src.11tydata.mjs', './src/src.11tydata.json', './src/src.json' ] +0ms
  Eleventy:TemplateWriter ./src/portfolio/nuka-cola-cap.md adding to template map. +0ms
  Eleventy:TemplateData Using [ '.11tydata', '' ] suffixes to find data files. +1ms
  Eleventy:TemplateData getLocalDataPaths('./src/portfolio/oil-spray-can.md'): [ './src/portfolio/oil-spray-can.11tydata.js', './src/portfolio/oil-spray-can.11tydata.cjs', './src/portfolio/oil-spray-can.11tydata.mjs', './src/portfolio/oil-spray-can.11tydata.json', './src/portfolio/oil-spray-can.json', './src/portfolio/portfolio.11tydata.js', './src/portfolio/portfolio.11tydata.cjs', './src/portfolio/portfolio.11tydata.mjs', './src/portfolio/portfolio.11tydata.json', './src/portfolio/portfolio.json', './src/src.11tydata.js', './src/src.11tydata.cjs', './src/src.11tydata.mjs', './src/src.11tydata.json', './src/src.json' ] +0ms
  Eleventy:TemplateWriter ./src/portfolio/oil-spray-can.md adding to template map. +1ms
  Eleventy:TemplateData Using [ '.11tydata', '' ] suffixes to find data files. +0ms
  Eleventy:TemplateData getLocalDataPaths('./src/portfolio/pipe-axe.md'): [ './src/portfolio/pipe-axe.11tydata.js', './src/portfolio/pipe-axe.11tydata.cjs', './src/portfolio/pipe-axe.11tydata.mjs', './src/portfolio/pipe-axe.11tydata.json', './src/portfolio/pipe-axe.json', './src/portfolio/portfolio.11tydata.js', './src/portfolio/portfolio.11tydata.cjs', './src/portfolio/portfolio.11tydata.mjs', './src/portfolio/portfolio.11tydata.json', './src/portfolio/portfolio.json', './src/src.11tydata.js', './src/src.11tydata.cjs', './src/src.11tydata.mjs', './src/src.11tydata.json', './src/src.json' ] +0ms
  Eleventy:TemplateWriter ./src/portfolio/pipe-axe.md adding to template map. +0ms
  Eleventy:TemplateData Using [ '.11tydata', '' ] suffixes to find data files. +1ms
  Eleventy:TemplateData getLocalDataPaths('./src/portfolio/rickenbacker.md'): [ './src/portfolio/rickenbacker.11tydata.js', './src/portfolio/rickenbacker.11tydata.cjs', './src/portfolio/rickenbacker.11tydata.mjs', './src/portfolio/rickenbacker.11tydata.json', './src/portfolio/rickenbacker.json', './src/portfolio/portfolio.11tydata.js', './src/portfolio/portfolio.11tydata.cjs', './src/portfolio/portfolio.11tydata.mjs', './src/portfolio/portfolio.11tydata.json', './src/portfolio/portfolio.json', './src/src.11tydata.js', './src/src.11tydata.cjs',
 './src/src.11tydata.mjs', './src/src.11tydata.json', './src/src.json' ] +0ms
  Eleventy:TemplateWriter ./src/portfolio/rickenbacker.md adding to template map. +1ms
  Eleventy:TemplateData Using [ '.11tydata', '' ] suffixes to find data files. +0ms
  Eleventy:TemplateData getLocalDataPaths('./src/portfolio/skyrim-sword.md'): [ './src/portfolio/skyrim-sword.11tydata.js', './src/portfolio/skyrim-sword.11tydata.cjs', './src/portfolio/skyrim-sword.11tydata.mjs', './src/portfolio/skyrim-sword.11tydata.json', './src/portfolio/skyrim-sword.json', './src/portfolio/portfolio.11tydata.js', './src/portfolio/portfolio.11tydata.cjs', './src/portfolio/portfolio.11tydata.mjs', './src/portfolio/portfolio.11tydata.json', './src/portfolio/portfolio.json', './src/src.11tydata.js', './src/src.11tydata.cjs',
 './src/src.11tydata.mjs', './src/src.11tydata.json', './src/src.json' ] +0ms
  Eleventy:TemplateWriter ./src/portfolio/skyrim-sword.md adding to template map. +0ms
  Eleventy:TemplateData Using [ '.11tydata', '' ] suffixes to find data files. +1ms
  Eleventy:TemplateData getLocalDataPaths('./src/portfolio/tamagotchi.md'): [ './src/portfolio/tamagotchi.11tydata.js', './src/portfolio/tamagotchi.11tydata.cjs', './src/portfolio/tamagotchi.11tydata.mjs', './src/portfolio/tamagotchi.11tydata.json', './src/portfolio/tamagotchi.json', './src/portfolio/portfolio.11tydata.js', './src/portfolio/portfolio.11tydata.cjs', './src/portfolio/portfolio.11tydata.mjs', './src/portfolio/portfolio.11tydata.json', './src/portfolio/portfolio.json', './src/src.11tydata.js', './src/src.11tydata.cjs', './src/src.11tydata.mjs', './src/src.11tydata.json', './src/src.json' ] +0ms
  Eleventy:TemplateWriter ./src/portfolio/tamagotchi.md adding to template map. +1ms
  Eleventy:TemplateData Using [ '.11tydata', '' ] suffixes to find data files. +0ms
  Eleventy:TemplateData getLocalDataPaths('./src/portfolio/vinyl.md'): [ './src/portfolio/vinyl.11tydata.js', './src/portfolio/vinyl.11tydata.cjs', './src/portfolio/vinyl.11tydata.mjs', './src/portfolio/vinyl.11tydata.json', './src/portfolio/vinyl.json', './src/portfolio/portfolio.11tydata.js', './src/portfolio/portfolio.11tydata.cjs', './src/portfolio/portfolio.11tydata.mjs', './src/portfolio/portfolio.11tydata.json', './src/portfolio/portfolio.json', './src/src.11tydata.js', './src/src.11tydata.cjs', './src/src.11tydata.mjs', './src/src.11tydata.json', './src/src.json' ] +0ms
  Eleventy:TemplateWriter ./src/portfolio/vinyl.md adding to template map. +0ms
  Eleventy:TemplateData Using [ '.11tydata', '' ] suffixes to find data files. +1ms
  Eleventy:TemplateData getLocalDataPaths('./src/portfolio/vorpal-blade.md'): [ './src/portfolio/vorpal-blade.11tydata.js', './src/portfolio/vorpal-blade.11tydata.cjs', './src/portfolio/vorpal-blade.11tydata.mjs', './src/portfolio/vorpal-blade.11tydata.json', './src/portfolio/vorpal-blade.json', './src/portfolio/portfolio.11tydata.js', './src/portfolio/portfolio.11tydata.cjs', './src/portfolio/portfolio.11tydata.mjs', './src/portfolio/portfolio.11tydata.json', './src/portfolio/portfolio.json', './src/src.11tydata.js', './src/src.11tydata.cjs',
 './src/src.11tydata.mjs', './src/src.11tydata.json', './src/src.json' ] +0ms
  Eleventy:TemplateWriter ./src/portfolio/vorpal-blade.md adding to template map. +1ms
  Eleventy:TemplatePassthrough Searching for: './src/js' +20ms
  Eleventy:FastGlobManager Glob search ('passthrough') searching for: './src/js' +23ms
  Eleventy:TemplatePassthroughManager Skipped copying './src/js' (emulated passthrough copy) +22ms
  Eleventy:FastGlobManager Glob search ('global-data') searching for: [ './src/_data/**/*.{json,mjs,cjs,js}' ] +1ms
  Eleventy:TemplateData Found global data file ./src/_data/site.js and adding as: site +7ms
  Eleventy:Template getMappedDate: using a date in the data for './src/about.md' of 2021-03-26T22:04:19.000Z +13s
  Eleventy:Template getMappedDate: YAML parsed it: 2021-03-26T22:04:19.000Z +0ms
  Eleventy:Template getMappedDate: using a date in the data for './src/cookies.md' of 2017-07-26T21:36:29.000Z +0ms
  Eleventy:Template getMappedDate: YAML parsed it: 2017-07-26T21:36:29.000Z +0ms
  Eleventy:Template getMappedDate: using a date in the data for './src/disclaimer.md' of 2018-07-03T14:54:33.000Z +0ms
  Eleventy:Template getMappedDate: YAML parsed it: 2018-07-03T14:54:33.000Z +0ms
  Eleventy:Template Template date: using file’s 'birthtimeMs' for './src/feed.njk' of 2021-04-08T15:14:44.943Z (from 1617894884943.266) +1ms
  Eleventy:Template getMappedDate: using a date in the data for './src/privacy.md' of 2017-07-26T14:32:48.000Z +0ms
  Eleventy:Template getMappedDate: YAML parsed it: 2017-07-26T14:32:48.000Z +0ms
  Eleventy:Template Template date: using file’s 'birthtimeMs' for './src/sitemap.njk' of 2021-04-08T15:17:47.153Z (from 1617895067153.001) +0ms
  Eleventy:Template getMappedDate: using a date in the data for './src/blog/2021-07-06-discord-bot-part-1.md' of 2021-07-06T15:50:23.000Z +0ms
  Eleventy:Template getMappedDate: YAML parsed it: 2021-07-06T15:50:23.000Z +0ms
  Eleventy:Template getMappedDate: using a date in the data for './src/portfolio/axe-the-shining.md' of 2021-03-22T06:23:47.000Z +0ms
  Eleventy:Template getMappedDate: YAML parsed it: 2021-03-22T06:23:47.000Z +0ms
  Eleventy:Template getMappedDate: using a date in the data for './src/portfolio/brush-axe.md' of 2021-03-22T06:23:47.000Z +1ms
  Eleventy:Template getMappedDate: YAML parsed it: 2021-03-22T06:23:47.000Z +0ms
  Eleventy:Template getMappedDate: using a date in the data for './src/portfolio/chess-set.md' of 2021-04-22T06:23:47.000Z +0ms
  Eleventy:Template getMappedDate: YAML parsed it: 2021-04-22T06:23:47.000Z +0ms
  Eleventy:Template getMappedDate: using a date in the data for './src/portfolio/excalibur.md' of 2021-03-22T06:23:47.000Z +0ms
  Eleventy:Template getMappedDate: YAML parsed it: 2021-03-22T06:23:47.000Z +0ms
  Eleventy:Template getMappedDate: using a date in the data for './src/portfolio/hardedge.md' of 2021-05-05T06:23:47.000Z +0ms
  Eleventy:Template getMappedDate: YAML parsed it: 2021-05-05T06:23:47.000Z +0ms
  Eleventy:Template getMappedDate: using a date in the data for './src/portfolio/harley-quinn-bat.md' of 2021-03-22T06:23:47.000Z +0ms
  Eleventy:Template getMappedDate: YAML parsed it: 2021-03-22T06:23:47.000Z +1ms
  Eleventy:Template getMappedDate: using a date in the data for './src/portfolio/l4d-adrenaline.md' of 2021-03-22T06:23:47.000Z +0ms
  Eleventy:Template getMappedDate: YAML parsed it: 2021-03-22T06:23:47.000Z +0ms
  Eleventy:Template getMappedDate: using a date in the data for './src/portfolio/l4d-pipebomb.md' of 2021-03-22T06:23:47.000Z +0ms
  Eleventy:Template getMappedDate: YAML parsed it: 2021-03-22T06:23:47.000Z +0ms
  Eleventy:Template getMappedDate: using a date in the data for './src/portfolio/mad-can.md' of 2021-03-22T06:23:47.000Z +0ms
  Eleventy:Template getMappedDate: YAML parsed it: 2021-03-22T06:23:47.000Z +0ms
  Eleventy:Template getMappedDate: using a date in the data for './src/portfolio/master-sword.md' of 2021-03-22T06:23:47.000Z +0ms
  Eleventy:Template getMappedDate: YAML parsed it: 2021-03-22T06:23:47.000Z +1ms
  Eleventy:Template getMappedDate: using a date in the data for './src/portfolio/modular-katanas.md' of 2021-03-22T06:23:47.000Z +0ms
  Eleventy:Template getMappedDate: YAML parsed it: 2021-03-22T06:23:47.000Z +0ms
  Eleventy:Template getMappedDate: using a date in the data for './src/portfolio/nuka-cola-cap.md' of 2021-03-22T06:23:47.000Z +0ms
  Eleventy:Template getMappedDate: YAML parsed it: 2021-03-22T06:23:47.000Z +0ms
  Eleventy:Template getMappedDate: using a date in the data for './src/portfolio/oil-spray-can.md' of 2021-03-22T06:23:47.000Z +0ms
  Eleventy:Template getMappedDate: YAML parsed it: 2021-03-22T06:23:47.000Z +0ms
  Eleventy:Template getMappedDate: using a date in the data for './src/portfolio/pipe-axe.md' of 2021-03-22T06:23:47.000Z +0ms
  Eleventy:Template getMappedDate: YAML parsed it: 2021-03-22T06:23:47.000Z +1ms
  Eleventy:Template getMappedDate: using a date in the data for './src/portfolio/skyrim-sword.md' of 2021-03-22T06:23:47.000Z +0ms
  Eleventy:Template getMappedDate: YAML parsed it: 2021-03-22T06:23:47.000Z +0ms
  Eleventy:Template getMappedDate: using a date in the data for './src/portfolio/rickenbacker.md' of 2016-04-21T06:23:47.000Z +0ms
  Eleventy:Template getMappedDate: YAML parsed it: 2016-04-21T06:23:47.000Z +0ms
  Eleventy:Template getMappedDate: using a date in the data for './src/portfolio/tamagotchi.md' of 2021-05-05T06:23:47.000Z +0ms
  Eleventy:Template getMappedDate: YAML parsed it: 2021-05-05T06:23:47.000Z +0ms
  Eleventy:Template getMappedDate: using a date in the data for './src/portfolio/vinyl.md' of 2021-04-20T06:23:47.000Z +0ms
  Eleventy:Template getMappedDate: YAML parsed it: 2021-04-20T06:23:47.000Z +0ms
  Eleventy:Template getMappedDate: using a date in the data for './src/portfolio/vorpal-blade.md' of 2021-03-22T06:23:47.000Z +1ms
  Eleventy:Template getMappedDate: YAML parsed it: 2021-03-22T06:23:47.000Z +0ms
  Eleventy:Template Template date: using file’s 'birthtimeMs' for './src/403.md' of 2021-04-09T12:27:50.679Z (from 1617971270679.9146) +0ms
  Eleventy:Template Template date: using file’s 'birthtimeMs' for './src/404.md' of 2021-03-29T14:49:23.612Z (from 1617029363612.594) +0ms
  Eleventy:Template Template date: using file’s 'birthtimeMs' for './src/blog.md' of 2021-03-25T17:10:44.443Z (from 1616692244443.883) +0ms
  Eleventy:Template Template date: using file’s 'birthtimeMs' for './src/index.md' of 2021-03-19T15:04:47.584Z (from 1616166287584.9316) +0ms
  Eleventy:Template Template date: using file’s 'birthtimeMs' for './src/portfolio.md' of 2021-03-24T14:17:03.928Z (from 1616595423928.3223) +0ms
  Eleventy:Template getMappedDate: using a date in the data for './src/blog/2021-04-20-toolbag-tips.md' of 2021-04-20T06:23:47.000Z +2ms
  Eleventy:Template getMappedDate: YAML parsed it: 2021-04-20T06:23:47.000Z +0ms
  Eleventy:TemplateMap Caching collections objects. +15s
  Eleventy:Template Rendering permalink for './src/feed.njk': feed.xml becomes 'feed.xml' +1ms
  Eleventy:Template Rendering permalink for './src/sitemap.njk': /sitemap.xml becomes '/sitemap.xml' +1ms
  Eleventy:Template Rendering permalink for './src/403.md': 403.html becomes '403.html' +0ms
  Eleventy:Template Rendering permalink for './src/404.md': 404.html becomes '404.html' +0ms
  Eleventy:TemplateMap Collection: collections.all size: 28 +3ms
  Eleventy:TemplateMap Collection: collections.post size: 2 +0ms
  Eleventy:TemplateMap Collection: collections.portfolio size: 19 +0ms
  Eleventy:TemplateMap Collection: collections.all size: 28 +0ms
[11ty] Unhandled rejection in promise:
[11ty] Tried to use templateContent too early on ./src/blog/2021-04-20-toolbag-tips.md (via TemplateContentPrematureUseError)
  Eleventy:EleventyErrorHandler (error stack): TemplateContentPrematureUseError: Tried to use templateContent too early on ./src/blog/2021-04-20-toolbag-tips.md
  Eleventy:EleventyErrorHandler     at Object.get [as templateContent] (file:///D:/Dev/Yogensia/yogensia-dot-com/node_modules/@11ty/eleventy/src/Template.js:622:14)
  Eleventy:EleventyErrorHandler     at Object.memberLookup (D:\Dev\Yogensia\yogensia-dot-com\node_modules\nunjucks\src\runtime.js:201:17)
  Eleventy:EleventyErrorHandler     at eval (eval at _compile (D:\Dev\Yogensia\yogensia-dot-com\node_modules\nunjucks\src\environment.js:527:18), <anonymous>:64:59)
  Eleventy:EleventyErrorHandler     at iterCallback (D:\Dev\Yogensia\yogensia-dot-com\node_modules\nunjucks\src\runtime.js:236:11)
  Eleventy:EleventyErrorHandler     at next (D:\Dev\Yogensia\yogensia-dot-com\node_modules\nunjucks\src\lib.js:258:7)
  Eleventy:EleventyErrorHandler     at eval (eval at _compile (D:\Dev\Yogensia\yogensia-dot-com\node_modules\nunjucks\src\environment.js:527:18), <anonymous>:68:1)
  Eleventy:EleventyErrorHandler     at D:\Dev\Yogensia\yogensia-dot-com\node_modules\@11ty\eleventy-plugin-rss\.eleventy.js:29:7 +0ms
  Eleventy:TemplatePassthrough Copying individual file 'src\\.htaccess' +51ms
  Eleventy:TemplatePassthrough Copying individual file 'src\\site.webmanifest' +0ms
  Eleventy:TemplatePassthrough Copying individual file 'src\\humans.txt' +0ms
  Eleventy:TemplatePassthrough Copying individual file 'src\\assets\\icons\\apple-touch-icon.png' +2ms
  Eleventy:TemplatePassthrough Copying individual file 'src\\assets\\icons\\android-chrome-192x192.png' +0ms
  Eleventy:TemplatePassthrough Copying individual file 'src\\assets\\icons\\android-chrome-512x512.png' +0ms
  Eleventy:TemplatePassthrough Copying individual file 'src\\assets\\icons\\browserconfig.xml' +0ms
  Eleventy:TemplatePassthrough Copying individual file 'src\\assets\\icons\\favicon-32x32.png' +0ms
  Eleventy:TemplatePassthrough Copying individual file 'src\\assets\\icons\\favicon-16x16.png' +0ms
  Eleventy:TemplatePassthrough Copying individual file 'src\\assets\\icons\\maskable-512x512.png' +0ms
  Eleventy:TemplatePassthrough Copying individual file 'src\\assets\\icons\\safari-pinned-tab.svg' +1ms
  Eleventy:TemplatePassthrough Copying individual file 'src\\assets\\images\\avatar.jpg' +0ms
  Eleventy:TemplatePassthrough Copying individual file 'src\\assets\\icons\\favicon.ico' +0ms
  Eleventy:TemplatePassthrough Copying individual file 'src\\assets\\icons\\mstile-150x150.png' +0ms
  Eleventy:TemplatePassthrough Copying individual file 'src\\assets\\images\\intro.jpg' +0ms
  Eleventy:TemplatePassthrough Copying individual file 'src\\assets\\images\\intro.webp' +1ms
  Eleventy:TemplatePassthrough Copying individual file 'src\\assets\\images\\logo.webp' +0ms
  Eleventy:TemplatePassthrough Copying individual file 'src\\assets\\images\\yogensia-cover.jpg' +1ms
  Eleventy:TemplatePassthrough Copying individual file 'src\\assets\\images\\logo.png' +0ms
  Eleventy:TemplatePassthrough Copying individual file 'src\\assets\\images\\yogensia-cover.webp' +0ms
  Eleventy:TemplatePassthroughManager Copied './src/.htaccess' (1 files) +59ms
  Eleventy:TemplatePassthroughManager Copied './src/site.webmanifest' (1 files) +1ms
  Eleventy:TemplatePassthroughManager Copied './src/humans.txt' (1 files) +1ms
  Eleventy:TemplatePassthroughManager Copied './src/assets/icons' (10 files) +2ms
  Eleventy:TemplatePassthroughManager Copied './src/assets/images' (7 files) +1ms
  Eleventy:TemplatePassthroughManager TemplatePassthrough copy finished. Current count: 20 +0ms

@chriskirknielsen
Copy link

I ran into this issue a few times myself, without any clear idea of how to isolate and replicate the issue. The suggestion of eleventyImport from Juhis seems to have fixed it for me so far (adjust with your own tags!):

---
eleventyImport:
    collections: ["posts"]
---

I guess it makes sense if it's trying to generate the RSS feed before the posts it's showing are built!

@sphars
Copy link

sphars commented May 6, 2024

I'm also seeing the same Tried to use templateContent too early on <markdown file> (via TemplateContentPrematureUseError)error, when saving markdown files when running eleventy --serve. I wanted to try out using the new transforms feature in the @11ty/eleventy-img plugin so I don't have to do anything fancy to get responsive images in Markdown to work (sidenote: after some configuration, it works great for me)

From the logs, I'm also seeing a reference to the RSS plugin:

[11ty] Unhandled rejection in promise: (more in DEBUG output)
[11ty] Tried to use templateContent too early on ./src/posts/2024/pc-build-2024.md (via TemplateContentPrematureUseError)
[11ty] 
[11ty] Original error stack trace: TemplateContentPrematureUseError: Tried to use templateContent too early on ./src/posts/2024/pc-build-2024.md
[11ty]     at Object.get [as templateContent] (file:///home/spencer/workspace/personal/spencerharston.com/node_modules/@11ty/eleventy/src/Template.js:622:14)
[11ty]     at Object.memberLookup (/home/spencer/workspace/personal/spencerharston.com/node_modules/nunjucks/src/runtime.js:201:17)
[11ty]     at eval (eval at _compile (/home/spencer/workspace/personal/spencerharston.com/node_modules/nunjucks/src/environment.js:527:18), <anonymous>:64:59)
[11ty]     at iterCallback (/home/spencer/workspace/personal/spencerharston.com/node_modules/nunjucks/src/runtime.js:236:11)
[11ty]     at next (/home/spencer/workspace/personal/spencerharston.com/node_modules/nunjucks/src/lib.js:258:7)
[11ty]     at eval (eval at _compile (/home/spencer/workspace/personal/spencerharston.com/node_modules/nunjucks/src/environment.js:527:18), <anonymous>:68:1)
[11ty]     at /home/spencer/workspace/personal/spencerharston.com/node_modules/@11ty/eleventy-plugin-rss/.eleventy.js:29:7
[11ty]     at process.processTicksAndRejections (node:internal/process/task_queues:95:5)

#975 and #1615 (which adds the eleventyImport config, docs) mention this issue. I've tried adding the eleventyImport data to some of my templates to no avail, so I must be doing something non-standard with my setup.

To avoid the above error, I now run eleventy with the --incremental flag. Not 100% perfect (can't get the eleventyImport options to work so a restart is needed in some cases to see updates), but it no longer throws an error when editing a .md file.

You can reproduce it using my repo and running with eleventy --serve

Packages:

  • @11ty/eleventy@3.0.0-alpha.10
  • @11ty/eleventy-img@5.0.0-beta.1
  • @11ty/eleventy-plugin-rss@1.2.0

@ttntm
Copy link

ttntm commented May 25, 2024

This issue popped up for me today, after almost 3 days without any issues on 3.0.0-alpha.10.

Nothing other than removing htmlToAbsoluteUrls(absolutePostUrl) helped.

Interestingly, I still got the function call in one of my partial feed's *.njks and it's not causing any issues.

@zachleat zachleat added this to the Eleventy 3.0.0 milestone May 26, 2024
@zachleat
Copy link
Member

zachleat commented May 28, 2024

I think 11ty/eleventy-plugin-rss#47 might be the best way forward here (supplying eleventyImport directly there too) but I welcome additional MVPs that reproduce this so I can help fix!

@ttntm
Copy link

ttntm commented May 29, 2024

@zachleat tried to reproduce it, but failed - everything worked.

I then proceeded to re-enable the commented htmlToAbsoluteUrls(absolutePostUrl) in my website's repo (1 and 2), and - lo and behold - it also worked there (again).

TBH, I'm quite confused now, because nothing's changed on a configuration level since my last comment - same machine, no system updates or other environment changes...

Anyway, the minimal reproduction repo can be found at, maybe someone else can manage to make the issue reproducible: https://github.com/ttntm/11ty_3136

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

9 participants