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

Turbopack fails to load valid .mjs module with UTF-8 error #75179

Open
DennisSmolek opened this issue Jan 22, 2025 · 2 comments
Open

Turbopack fails to load valid .mjs module with UTF-8 error #75179

DennisSmolek opened this issue Jan 22, 2025 · 2 comments
Labels
please add a complete reproduction Please add a complete reproduction. stale The issue has not seen recent activity. Turbopack Related to Turbopack with Next.js.

Comments

@DennisSmolek
Copy link

Link to the code that reproduces this issue

https://github.com/utsuboco/r3f-perf/blob/752adc19edbcabc43fc917519c5366718fa0b9d0/src/components/TextsHighHZ.tsx#L10

To Reproduce

Description

Turbopack is failing to load a valid .mjs module that exports a base64 string. The module is from r3f-perf package and contains a valid JavaScript file that exports a base64-encoded font string.

Error Message

Module not found: Can't resolve '../roboto.woff.mjs'
8 | import as THREE from "three";
9 | import { useEvent } from "@utsubo/events";
> 10 | import localFont from "../roboto.woff.mjs";
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
11 | import { getPerf } from "../store.mjs";
failed to convert rope into string
Caused by:
invalid utf-8 sequence of 1 bytes from index 11

Current vs. Expected behavior

Expected Behavior

The file should load successfully as it's a valid ES module that simply exports a string:

javascript
// Content of roboto.woff.mjs
const localFont = "data:font/woff;base64,..."
export { localFont as default };

Actual Behavior

Turbopack appears to be attempting UTF-8 validation before module parsing, causing it to fail on what should be a valid JavaScript file. The same file loads correctly when using webpack.

Their package is Typescript and builds for CJS and ESM. I tried aliasing and it failed.

Provide environment information

Operating System:
  Platform: win32
  Arch: x64
  Version: Windows 11 Home
  Available memory (MB): 40638
  Available CPU cores: 16
Binaries:
  Node: 20.9.0
  npm: N/A
  Yarn: N/A
  pnpm: N/A
Relevant Packages:
  next: 14.2.23 // An outdated version detected (latest is 15.1.5), upgrade is highly recommended!
  eslint-config-next: 14.1.0
  react: 18.2.0
  react-dom: 18.2.0
  typescript: 5.7.2
Next.js Config:
  output: N/A

Which area(s) are affected? (Select all that apply)

Webpack, Turbopack, Developer Experience

Which stage(s) are affected? (Select all that apply)

next dev (local), next start (local)

Additional context

  • This worked in Next.js 14.1 with Turbopack
  • Still works with webpack in Next.js 14.2
  • The file is a valid ES module exporting a base64 string
  • Attempted to use resolveAlias in turbo config but it's ignored
  • Package affected: r3f-perf

Link to issue in other library : utsuboco/r3f-perf#59

Impact

This prevents using Turbopack with packages that use this pattern for asset loading, requiring fallback to webpack development server.

@github-actions github-actions bot added Developer Experience Turbopack Related to Turbopack with Next.js. Webpack Related to Webpack with Next.js. labels Jan 22, 2025
@samcx samcx added please add a complete reproduction Please add a complete reproduction. and removed Developer Experience Webpack Related to Webpack with Next.js. labels Jan 22, 2025
Copy link
Contributor

We cannot recreate the issue with the provided information. Please add a reproduction in order for us to be able to investigate.

Why was this issue marked with the please add a complete reproduction label?

To be able to investigate, we need access to a reproduction to identify what triggered the issue. We prefer a link to a public GitHub repository (template for App Router, template for Pages Router), but you can also use these templates: CodeSandbox: App Router or CodeSandbox: Pages Router.

To make sure the issue is resolved as quickly as possible, please make sure that the reproduction is as minimal as possible. This means that you should remove unnecessary code, files, and dependencies that do not contribute to the issue. Ensure your reproduction does not depend on secrets, 3rd party registries, private dependencies, or any other data that cannot be made public. Avoid a reproduction including a whole monorepo (unless relevant to the issue). The easier it is to reproduce the issue, the quicker we can help.

Please test your reproduction against the latest version of Next.js (next@canary) to make sure your issue has not already been fixed.

If you cannot create a clean reproduction, another way you can help the maintainers' job is to pinpoint the canary version of next that introduced the issue. Check out our releases, and try to find the first canary release that introduced the issue. This will help us narrow down the scope of the issue, and possibly point to the PR/code change that introduced it. You can install a specific version of next by running npm install next@<version>.

I added a link, why was it still marked?

Ensure the link is pointing to a codebase that is accessible (e.g. not a private repository). "example.com", "n/a", "will add later", etc. are not acceptable links -- we need to see a public codebase. See the above section for accepted links.

What happens if I don't provide a sufficient minimal reproduction?

Issues with the please add a complete reproduction label that receives no meaningful activity (e.g. new comments with a reproduction link) are automatically closed and locked after 2 days.

If your issue has not been resolved in that time and it has been closed/locked, please open a new issue with the required reproduction.

I did not open this issue, but it is relevant to me, what can I do to help?

Anyone experiencing the same issue is welcome to provide a minimal reproduction following the above steps. Furthermore, you can upvote the issue using the 👍 reaction on the topmost comment (please do not comment "I have the same issue" without reproduction steps). Then, we can sort issues by votes to prioritize.

I think my reproduction is good enough, why aren't you looking into it quicker?

We look into every Next.js issue and constantly monitor open issues for new comments.

However, sometimes we might miss one or two due to the popularity/high traffic of the repository. We apologize, and kindly ask you to refrain from tagging core maintainers, as that will usually not result in increased priority.

Upvoting issues to show your interest will help us prioritize and address them as quickly as possible. That said, every issue is important to us, and if an issue gets closed by accident, we encourage you to open a new one linking to the old issue and we will look into it.

Useful Resources

@samcx
Copy link
Member

samcx commented Jan 28, 2025

@DennisSmolek We will need a reproduction that uses Next.js!

@nextjs-bot nextjs-bot added the stale The issue has not seen recent activity. label Jan 29, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
please add a complete reproduction Please add a complete reproduction. stale The issue has not seen recent activity. Turbopack Related to Turbopack with Next.js.
Projects
None yet
Development

No branches or pull requests

3 participants