From dbd6f515a056588454f3a8bc620945eeab760e06 Mon Sep 17 00:00:00 2001 From: Vlad Nicula Date: Fri, 25 May 2018 16:29:26 +0300 Subject: [PATCH] Fix dynamic import in non webpack env regression #3345 (#4208) Just in case #3345 was a regression and nextjs should still support non webpack node envs for testing. --- server/build/babel/plugins/handle-import.js | 42 +++++++++++++-------- 1 file changed, 26 insertions(+), 16 deletions(-) diff --git a/server/build/babel/plugins/handle-import.js b/server/build/babel/plugins/handle-import.js index fb93167f..813687bf 100644 --- a/server/build/babel/plugins/handle-import.js +++ b/server/build/babel/plugins/handle-import.js @@ -16,23 +16,33 @@ const TYPE_IMPORT = 'Import' const buildImport = (args) => (template(` ( - new (require('next/dynamic').SameLoopPromise)((resolve, reject) => { - const weakId = require.resolveWeak(SOURCE) - try { - const weakModule = __webpack_require__(weakId) - return resolve(weakModule) - } catch (err) {} - - require.ensure([], (require) => { - try { + typeof require.resolveWeak !== 'function' ? + new (require('next/dynamic').SameLoopPromise)((resolve, reject) => { + eval('require.ensure = function (deps, callback) { callback(require) }') + require.ensure([], (require) => { let m = require(SOURCE) - m.__webpackChunkName = '${args.name}' - resolve(m) - } catch(error) { - reject(error) - } - }, 'chunks/${args.name}'); - }) + m.__webpackChunkName = '${args.name}.js' + resolve(m); + }, 'chunks/${args.name}.js'); + }) + : + new (require('next/dynamic').SameLoopPromise)((resolve, reject) => { + const weakId = require.resolveWeak(SOURCE) + try { + const weakModule = __webpack_require__(weakId) + return resolve(weakModule) + } catch (err) {} + + require.ensure([], (require) => { + try { + let m = require(SOURCE) + m.__webpackChunkName = '${args.name}' + resolve(m) + } catch(error) { + reject(error) + } + }, 'chunks/${args.name}'); + }) ) `))