diff --git a/package-lock.json b/package-lock.json index 7e3dbad373..0895787ed7 100644 --- a/package-lock.json +++ b/package-lock.json @@ -26663,7 +26663,7 @@ "@webcomponents/template-shadowroot": "^0.1.0", "command-line-args": "^5.1.1", "deepmerge": "^4.2.2", - "enhanced-resolve": "*", + "enhanced-resolve": "^5.10.0", "koa": "^2.7.0", "koa-cors": "^0.0.16", "koa-node-resolve": "^1.0.0-pre.5", diff --git a/packages/labs/ssr/src/lib/module-loader.ts b/packages/labs/ssr/src/lib/module-loader.ts index 8b939d5e57..26b5c24df7 100644 --- a/packages/labs/ssr/src/lib/module-loader.ts +++ b/packages/labs/ssr/src/lib/module-loader.ts @@ -278,6 +278,7 @@ export const resolveSpecifier = async ( modules: ['node_modules'], extensions: ['.js'], mainFields: ['module', 'jsnext:main', 'main'], + conditionNames: ['node'], }); return pathToFileURL(modulePath); } diff --git a/packages/labs/ssr/src/test/lib/module-loader_test.ts b/packages/labs/ssr/src/test/lib/module-loader_test.ts index d0aad0ab69..b010be7bd7 100644 --- a/packages/labs/ssr/src/test/lib/module-loader_test.ts +++ b/packages/labs/ssr/src/test/lib/module-loader_test.ts @@ -53,4 +53,38 @@ test('loads a module with a built-in import', async () => { assert.ok(module.namespace.join); }); +test('resolves an exact exported path', async () => { + const loader = new ModuleLoader({global: window}); + const result = await loader.importModule('./lit-import.js', testIndex); + const {module, path: modulePath} = result; + assert.is(module.namespace.litIsServer, true); + assert.ok(loader.cache.has(modulePath)); + const isServerPath = path.resolve( + path.dirname(testIndex), + '../../../../../lit-html/node/is-server.js' + ); + assert.ok(loader.cache.has(isServerPath)); +}); + +test('resolves a root exported path (.)', async () => { + const loader = new ModuleLoader({global: window}); + const result = await loader.importModule( + './lit-import-from-root.js', + testIndex + ); + const {module, path: modulePath} = result; + assert.is(module.namespace.litIsServer, true); + assert.ok(loader.cache.has(modulePath)); + const litPath = path.resolve( + path.dirname(testIndex), + '../../../../../lit/index.js' + ); + const isServerPath = path.resolve( + path.dirname(testIndex), + '../../../../../lit-html/node/is-server.js' + ); + assert.ok(loader.cache.has(litPath)); + assert.ok(loader.cache.has(isServerPath)); +}); + test.run(); diff --git a/packages/labs/ssr/src/test/test-files/module-loader/lit-import-from-root.js b/packages/labs/ssr/src/test/test-files/module-loader/lit-import-from-root.js new file mode 100644 index 0000000000..0a1c784a5d --- /dev/null +++ b/packages/labs/ssr/src/test/test-files/module-loader/lit-import-from-root.js @@ -0,0 +1,2 @@ +import {isServer} from 'lit'; +export const litIsServer = isServer; diff --git a/packages/labs/ssr/src/test/test-files/module-loader/lit-import.js b/packages/labs/ssr/src/test/test-files/module-loader/lit-import.js new file mode 100644 index 0000000000..9054221c54 --- /dev/null +++ b/packages/labs/ssr/src/test/test-files/module-loader/lit-import.js @@ -0,0 +1,2 @@ +import {isServer} from 'lit-html/is-server.js'; +export const litIsServer = isServer;