You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
blog-astro/src/content/journal-entries/2024-11-24.md

2.2 KiB

title date tags category description
Content Frontmatter Causes `astro build` Error? 2024-11-24
astro
Astro Keep your eyes peeled for special characters.

Another entry for this site. I ran pnpm run build after adding yesterday's entry, and got this error:

✘ [ERROR] The build was canceled

end of the stream or a document separator is expected
  Hint:
    Browser APIs are not available on the server.

    If the code is in a framework component, try to access these objects after rendering using lifecycle methods or use a `client:only` directive to make the component exclusively run on the client.

    See https://docs.astro.build/en/guides/troubleshooting/#document-or-window-is-not-defined for more information.

  Location:
    /home/avraham/sakal.us/blog-astro/src/content/journal-entries/2024-11-23.md:1:7
  Stack trace:
    at generateError (/home/avraham/sakal.us/blog-astro/node_modules/.pnpm/js-yaml@3.14.1/node_modules/js-yaml/lib/js-yaml/loader.js:167:10)
    at readDocument (/home/avraham/sakal.us/blog-astro/node_modules/.pnpm/js-yaml@3.14.1/node_modules/js-yaml/lib/js-yaml/loader.js:1545:5)
    at load (/home/avraham/sakal.us/blog-astro/node_modules/.pnpm/js-yaml@3.14.1/node_modules/js-yaml/lib/js-yaml/loader.js:1614:19)
    at module.exports (/home/avraham/sakal.us/blog-astro/node_modules/.pnpm/gray-matter@4.0.3/node_modules/gray-matter/lib/parse.js:12:17)
    at matter (/home/avraham/sakal.us/blog-astro/node_modules/.pnpm/gray-matter@4.0.3/node_modules/gray-matter/index.js:50:10)
ELIFECYCLE Command failed with exit code 1.

I was obviously not using Browser APIs in an .md file. But, it did report that file as the culprit (specifically, the first line), so I checked it out.

---
title: @astrojs/node Build Error
date: 2024-11-23
---

<... rest of the file...>

I noticed the @ was a different color than the rest of the line. I thought YAML interprets any non-digit character as the start of a string; but just in case I wrapped the line in quotes, and it worked!

---
title: "@astrojs/node Build Error"
date: 2024-11-23
---

<... rest of the file...>

It seems that the @ character signals an import from another file, and obviously there wasn't any so-named file.