mirror of
https://github.com/hanzoai/next.js.git
synced 2026-09-24 17:00:51 +00:00
### 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]>
34 lines
1.3 KiB
TypeScript
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')
|
|
})
|
|
})
|