Files
ce90e190f2 fix: Rename proxy.js to middleware.js in NFT file (#86214)
### Why?

When Proxy self-references itself, e.g., `__filename`, it is traced to
the NFT file. However, since Next.js renames 'proxy.js' to
'middleware.js' during webpack build, the files in NFT will differ from
the actual outputs. This can cause a problem when verifying the NFT.

Current Behavior:


https://github.com/vercel/next.js/actions/runs/19483162554/job/55760669267?pr=86214#step:34:91

### How?

Therefore, also rename the self-reference of `'proxy.js'` in
`middleware.js.nft.json` to `'middleware.js'`.

I don't expect other modules to be referencing the build output of
Proxy, that is not recommended.

Closes NEXT-4777
Closes NAR-518

---------

Co-authored-by: Niklas Mischkulnig <[email protected]>
2025-11-19 21:23:31 +01:00

34 lines
1.3 KiB
TypeScript

import { nextTestSetup } from 'e2e-utils'
import fs from 'fs'
import path from 'path'
// This test verifies a case when the "proxy.ts" bundle is being traced into the NFT file as "proxy.js".
// As Next.js renames "proxy.js" to "middleware.js" during webpack build, the files in NFT will differ
// from the actual outputs, which will fail for the providers like Vercel that checks for the files in NFT.
describe('proxy-nfc-traced', () => {
const { next, isTurbopack, isNextStart } = nextTestSetup({
files: __dirname,
})
// 'middleware.js' won't be traced because Turbopack doesn't bundle all code to .next/server/middleware.js
if (isNextStart && !isTurbopack) {
it('should have renamed trace file as middleware instead of proxy', async () => {
const nfc = JSON.parse(
fs.readFileSync(
path.join(next.testDir, '.next/server/middleware.js.nft.json'),
'utf-8'
)
)
expect(nfc.files).toContain('middleware.js')
expect(nfc.files).not.toContain('proxy.js')
})
}
// Previously, the deployment tests failed because of the traced file name mismatch.
it('should successfully build and be redirected from proxy', async () => {
const $ = await next.render$('/home')
expect($('p').text()).toBe('hello world')
})
})