Skip to content

Commit

Permalink
Fix: revert the bad node binary handling (#72356)
Browse files Browse the repository at this point in the history
backport #71723
  • Loading branch information
huozhi authored Nov 5, 2024
1 parent c7f7de9 commit b19f098
Show file tree
Hide file tree
Showing 4 changed files with 27 additions and 45 deletions.
20 changes: 8 additions & 12 deletions packages/next/src/build/webpack-config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -1192,7 +1192,6 @@ export default async function getBaseWebpackConfig(
'next-metadata-route-loader',
'modularize-import-loader',
'next-barrel-loader',
'next-server-binary-loader',
'next-error-browser-binary-loader',
].reduce((alias, loader) => {
// using multiple aliases to replace `resolveLoader.modules`
Expand Down Expand Up @@ -1278,17 +1277,14 @@ export default async function getBaseWebpackConfig(
or: WEBPACK_LAYERS.GROUP.nonClientServerTarget,
},
},
{
test: /[\\/].*?\.node$/,
loader: isNodeServer
? 'next-server-binary-loader'
: 'next-error-browser-binary-loader',
// On server side bundling, only apply to app router, do not apply to pages router;
// On client side or edge runtime bundling, always error.
...(isNodeServer && {
issuerLayer: isWebpackAppLayer,
}),
},
...(isNodeServer
? []
: [
{
test: /[\\/].*?\.node$/,
loader: 'next-error-browser-binary-loader',
},
]),
...(hasAppDir
? [
{
Expand Down

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -4,26 +4,25 @@ import {
getRedboxDescription,
getRedboxSource,
} from 'next-test-utils'
;(process.env.TURBOPACK ? describe.skip : describe)(
'externalize-node-binary-browser-error',
() => {
const { next } = nextTestSetup({
files: __dirname,
})

it('should error when import node binary on browser side', async () => {
const browser = await next.browser('/')
await hasRedbox(browser)
const redbox = {
description: await getRedboxDescription(browser),
source: await getRedboxSource(browser),
}
// FIXME: er-enable when we have a better implementation of node binary resolving
describe.skip('externalize-node-binary-browser-error', () => {
const { next } = nextTestSetup({
files: __dirname,
})

expect(redbox.description).toBe('Failed to compile')
expect(redbox.source).toMatchInlineSnapshot(`
it('should error when import node binary on browser side', async () => {
const browser = await next.browser('/')
await hasRedbox(browser)
const redbox = {
description: await getRedboxDescription(browser),
source: await getRedboxSource(browser),
}

expect(redbox.description).toBe('Failed to compile')
expect(redbox.source).toMatchInlineSnapshot(`
"./node_modules/foo-browser-import-binary/binary.node
Error: Node.js binary module ./node_modules/foo-browser-import-binary/binary.node is not supported in the browser. Please only use the module on server side"
`)
})
}
)
})
})
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import { nextTestSetup } from 'e2e-utils'

describe('externalize-node-binary', () => {
// FIXME: er-enable when we have a better implementation of node binary resolving
describe.skip('externalize-node-binary', () => {
const { next } = nextTestSetup({
files: __dirname,
})
Expand Down

0 comments on commit b19f098

Please sign in to comment.