From f24af57e6df808d17178bfb9edc3a837134078f2 Mon Sep 17 00:00:00 2001 From: hellivan Date: Fri, 18 Mar 2022 21:40:37 +0100 Subject: [PATCH] fix(node): npm modules are not resolved correctly (#9284) The current implementation of the node executor resolves all npm modules that are referenced by the application from the root node_modules folder. This behavior leads to runtime errors if any of the project dependencies requires a different version of a package than the project itself. For example, if we have a project that depends on `express` in version `4.17.3` (which on the other hand depends on `path-to-regexp` version `0.1.7`) as well as on `path-to-regexp` in version `6.2.0`. In such case `express` will throw a runtime error since it would load `path-to-regexp` version `6.2.0` which is not API compatible. For this reason, this commit changes the behavior of the node-executor so that it completely ignores npm dependencies when calculating resolve mappings. --- packages/node/src/executors/node/node.impl.ts | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/packages/node/src/executors/node/node.impl.ts b/packages/node/src/executors/node/node.impl.ts index eabcedd193cef..248f70d6672bd 100644 --- a/packages/node/src/executors/node/node.impl.ts +++ b/packages/node/src/executors/node/node.impl.ts @@ -72,10 +72,9 @@ function calculateResolveMappings( parsed.configuration ); return dependencies.reduce((m, c) => { - if (!c.outputs[0] && c.node.type === 'npm') { - c.outputs[0] = `node_modules/${c.node.data.packageName}`; + if (c.node.type !== 'npm' && c.outputs[0] != null) { + m[c.name] = joinPathFragments(context.root, c.outputs[0]); } - m[c.name] = joinPathFragments(context.root, c.outputs[0]); return m; }, {}); }