提交 58cbd0aa 编写于 作者: J JJ Kasper 提交者: Tim Neutkens

Fix HMR failing when rendering with `/index` (#6541)

Fixes: #6497 
上级 b6dfb44a
......@@ -178,6 +178,7 @@ export async function renderToHTML(
query: ParsedUrlQuery,
renderOpts: RenderOpts,
): Promise<string | null> {
pathname = pathname === '/index' ? '/' : pathname
const {
err,
dev = false,
......
......@@ -108,7 +108,6 @@ export default class DevServer extends Server {
}
if (!this.quiet) console.error(err)
}
return super.renderToHTML(req, res, pathname, query, options)
}
......
......@@ -24,6 +24,10 @@ app.prepare().then(() => {
app.setAssetPrefix('')
}
if (/test-index-hmr/.test(req.url)) {
return app.render(req, res, '/index')
}
handleNextRequests(req, res)
})
......
......@@ -3,14 +3,19 @@
import { join } from 'path'
import getPort from 'get-port'
import clone from 'clone'
import webdriver from 'next-webdriver'
import {
initNextServerScript,
killApp,
renderViaHTTP,
fetchViaHTTP
fetchViaHTTP,
check,
File
} from 'next-test-utils'
const appDir = join(__dirname, '../')
const indexPg = new File(join(appDir, 'pages/index.js'))
let appPort
let server
jasmine.DEFAULT_TIMEOUT_INTERVAL = 1000 * 60 * 2
......@@ -84,4 +89,32 @@ describe('Custom Server', () => {
expect(response.headers.get('etag')).toBeNull()
})
})
describe('HMR with custom server', () => {
beforeAll(() => startServer())
afterAll(() => {
killApp(server)
indexPg.restore()
})
it('Should support HMR when rendering with /index pathname', async () => {
let browser
try {
browser = await webdriver(context.appPort, '/test-index-hmr')
const text = await browser.elementByCss('#go-asset').text()
expect(text).toBe('Asset')
indexPg.replace('Asset', 'Asset!!')
await check(
() => browser.elementByCss('#go-asset').text(),
/Asset!!/
)
} finally {
if (browser) {
browser.close()
}
}
})
})
})
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册