1
0
Fork 0
mirror of https://github.com/terribleplan/next.js.git synced 2024-01-19 02:48:18 +00:00

server: render .json urls

This commit is contained in:
nkzawa 2016-10-06 16:06:55 +09:00
parent 22cfcf5357
commit 66b224ad26
3 changed files with 11 additions and 5 deletions

View file

@ -13,7 +13,7 @@ import moduleAlias from 'babel-plugin-module-alias'
const babelRuntimePath = require.resolve('babel-runtime/package')
.replace(/[\\\/]package\.json$/, '');
export function transpile (path, { root = process.cwd() } = {}) {
export function transpile (path) {
return new Promise((resolve, reject) => {
transformFile(path, {
presets: [preset2015, presetReact],
@ -38,7 +38,7 @@ export function transpile (path, { root = process.cwd() } = {}) {
})
}
export function bundle (path, { root = process.cwd() } = {}) {
export function bundle (path) {
const fs = new MemoryFS()
const compiler = webpack({

View file

@ -66,6 +66,7 @@ export default class Server {
}
async renderJSON (req, res, path) {
const { root } = this
let json
try {
json = await renderJSON(path, { root })
@ -75,9 +76,11 @@ export default class Server {
}
throw err
}
const data = JSON.stringify(json)
res.setHeader('Content-Type', 'application/json')
res.setHeader('Content-Length', Buffer.byteLength(json))
res.end(json)
res.setHeader('Content-Length', Buffer.byteLength(data))
res.end(data)
}
async render404 (req, res) {

View file

@ -39,5 +39,8 @@ export async function render (path, req, res, { root = process.cwd() } = {}) {
return '<!DOCTYPE html>' + renderToStaticMarkup(doc)
}
export async function renderJSON (path) {
export async function renderJSON (path, { root = process.cwd() }) {
const bundlePath = resolve(root, '.next', '.next', 'pages', (path || 'index') + '.js')
const component = await fs.readFile(bundlePath, 'utf8')
return { component }
}