vercel / next.js

The React Framework
https://nextjs.org
MIT License
124.92k stars 26.67k forks source link

Comments mistaken for children in next/link component #30767

Open quick007 opened 2 years ago

quick007 commented 2 years ago

What version of Next.js are you using?

12.0.1

What version of Node.js are you using?

17.0.1

What browser are you using?

Chrome

What operating system are you using?

Windows 11

How are you deploying your application?

Not needed

Describe the Bug

Adding a comment in the Link component triggers this error: image

I'm going to hazard a guess and assume this is because of swc, as this code didn't trigger the error previously.

Expected Behavior

The error shouldn't be triggered and the comment should be ignored

To Reproduce

Use this code:


<Link href="/"> {/*This is a comment*/}
  <a>
    stuff
  </a>
</Link>
padmaia commented 2 years ago

Looks like it's not related to swc because I can reproduce this issue using Babel as well.

hi-ogawa commented 2 years ago

It seems these two jsx are actually differently transpiled according to current babel on web repl:

<Link href="/">
  {/* This is a comment */}
  <a>
    stuff
  </a>
</Link>;

<Link href="/"> {/* This is a comment */}
  <a>
    stuff
  </a>
</Link>;

I made an example below on babeljs.io. Note that there is an additional whilespace " " for the 2nd case.

It's also interesting to see what prettier does for this input:

github-actions[bot] commented 1 year ago

Please verify that your issue can be recreated with next@canary.

Why was this issue marked with the please verify canary label?

We noticed the provided reproduction was using an older version of Next.js, instead of canary.

The canary version of Next.js ships daily and includes all features and fixes that have not been released to the stable version yet. You can think of canary as a public beta. Some issues may already be fixed in the canary version, so please verify that your issue reproduces by running npm install next@canary and test it in your project, using your reproduction steps.

If the issue does not reproduce with the canary version, then it has already been fixed and this issue can be closed.

How can I quickly verify if my issue has been fixed in canary?

The safest way is to install next@canary in your project and test it, but you can also search through closed Next.js issues for duplicates or check the Next.js releases.

My issue has been open for a long time, why do I need to verify canary now?

Next.js does not backport bug fixes to older versions of Next.js. Instead, we are trying to introduce only a minimal amount of breaking changes between major releases.

What happens if I don't verify against the canary version of Next.js?

An issue with the please verify canary that receives no meaningful activity (e.g. new comments that acknowledge verification against canary) will be automatically closed and locked after 30 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, using next@canary.

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 :+1: reaction on the topmost comment (please do not comment "I have the same issue" without repro 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

quick007 commented 1 year ago

@JanKaifer This still seems to be a bug. Repro: https://github.com/quick007/codespaces-nextjs

quick007 commented 1 year ago

^ verifies canary