diff --git a/lib/FileSystemInfo.js b/lib/FileSystemInfo.js index b98215d1b9e..f3337a00713 100644 --- a/lib/FileSystemInfo.js +++ b/lib/FileSystemInfo.js @@ -692,6 +692,11 @@ class SnapshotOptimization { } } +const parseString = str => { + if (str[0] === "'") str = `"${str.slice(1, -1).replace(/"/g, '\\"')}"`; + return JSON.parse(str); +}; + /* istanbul ignore next */ /** * @param {number} mtime mtime @@ -1657,17 +1662,13 @@ class FileSystemInfo { let dependency; if (imp.d === -1) { // import ... from "..." - dependency = JSON.parse( + dependency = parseString( source.substring(imp.s - 1, imp.e + 1) ); } else if (imp.d > -1) { // import() let expr = source.substring(imp.s, imp.e).trim(); - if (expr[0] === "'") - expr = `"${expr - .slice(1, -1) - .replace(/"/g, '\\"')}"`; - dependency = JSON.parse(expr); + dependency = parseString(expr); } else { // e.g. import.meta continue; diff --git a/test/fixtures/buildDependencies/esm.mjs b/test/fixtures/buildDependencies/esm.mjs index cd233797b08..6b8775cc057 100644 --- a/test/fixtures/buildDependencies/esm.mjs +++ b/test/fixtures/buildDependencies/esm.mjs @@ -1,5 +1,9 @@ export { default } from "./esm-dep.mjs"; +// prettier-ignore +import './esm-dep.mjs'; export const asyncDep = ( await import("../../js/buildDepsInput/esm-async-dependency.mjs") ).default; +// prettier-ignore +await import('../../js/buildDepsInput/esm-async-dependency.mjs')