Skip to content

Commit ec2c8c6

Browse files
arunodankzawa
authored andcommitted
Fix .json import issue (vercel#944)
* Fix .json import error This is a regression we've added by vercel#926 (tree-shaking-support) * Add a test case.
1 parent 5790986 commit ec2c8c6

File tree

5 files changed

+20
-2
lines changed

5 files changed

+20
-2
lines changed

server/build/loaders/emit-file-loader.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ module.exports = function (content, sourceMap) {
1616
}
1717

1818
if (query.transform) {
19-
const transformed = query.transform({ content, sourceMap })
19+
const transformed = query.transform({ content, sourceMap, interpolatedName })
2020
return emit(transformed.content, transformed.sourceMap)
2121
}
2222

server/build/webpack.js

+6-1
Original file line numberDiff line numberDiff line change
@@ -149,7 +149,12 @@ export default async function createCompiler (dir, { dev = false, quiet = false
149149
// By default, our babel config does not transpile ES2015 module syntax because
150150
// webpack knows how to handle them. (That's how it can do tree-shaking)
151151
// But Node.js doesn't know how to handle them. So, we have to transpile them here.
152-
transform ({ content, sourceMap }) {
152+
transform ({ content, sourceMap, interpolatedName }) {
153+
// Only handle .js files
154+
if (!(/\.js$/.test(interpolatedName))) {
155+
return { content, sourceMap }
156+
}
157+
153158
const transpiled = babelCore.transform(content, {
154159
presets: ['es2015'],
155160
sourceMaps: dev ? 'both' : false,

test/integration/basic/lib/data.json

+3
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
{
2+
"name": "Zeit"
3+
}

test/integration/basic/pages/json.js

+5
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
import data from '../lib/data'
2+
3+
export default () => (
4+
<div>{data.name}</div>
5+
)

test/integration/basic/test/rendering.js

+5
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,11 @@ export default function ({ app }, suiteName, render) {
6161
expect($('pre').text().includes(expectedErrorMessage)).toBeTruthy()
6262
})
6363

64+
test('allows to import .json files', async () => {
65+
const html = await render('/json')
66+
expect(html.includes('Zeit')).toBeTruthy()
67+
})
68+
6469
test('error', async () => {
6570
const $ = await get$('/error')
6671
expect($('pre').text()).toMatch(/This is an expected error/)

0 commit comments

Comments
 (0)