diff --git a/packages/next/taskfile-swc.js b/packages/next/taskfile-swc.js
index 71f79fc86477..45e985cb7cc6 100644
--- a/packages/next/taskfile-swc.js
+++ b/packages/next/taskfile-swc.js
@@ -118,6 +118,7 @@ module.exports = function (task) {
if (interopClientDefaultExport) {
output.code += `
if (typeof exports.default === 'function' || (typeof exports.default === 'object' && exports.default !== null)) {
+ Object.defineProperty(exports.default, '__esModule', { value: true });
Object.assign(exports.default, exports);
module.exports = exports.default;
}
diff --git a/test/unit/esm-interpolate/esm-interpolate.test.tsx b/test/unit/esm-interpolate/esm-interpolate.test.tsx
new file mode 100644
index 000000000000..c6ffb8137582
--- /dev/null
+++ b/test/unit/esm-interpolate/esm-interpolate.test.tsx
@@ -0,0 +1,14 @@
+import React from 'react'
+import { renderToString } from 'react-dom/server'
+import * as nextRouter from 'next/router'
+
+import { Foo } from './fixture'
+
+// @ts-expect-error
+jest.spyOn(nextRouter, 'useRouter').mockReturnValue({
+ pathname: 'Hello',
+})
+
+test('mock the interpolated modules should work', () => {
+ expect(renderToString(