From d070fdfee86795bc0d0058cc1e957a24b82e5931 Mon Sep 17 00:00:00 2001 From: Victor Savkin Date: Wed, 28 Sep 2022 14:18:34 -0400 Subject: [PATCH] fix(misc): buildable libs should not throw when some npm packages are not defined --- package.json | 2 +- packages/nx/src/utils/logger.spec.ts | 62 ------------------- .../utilities/buildable-libs-utils.spec.ts | 2 +- .../src/utilities/buildable-libs-utils.ts | 8 +++ yarn.lock | 9 +-- 5 files changed, 15 insertions(+), 68 deletions(-) delete mode 100644 packages/nx/src/utils/logger.spec.ts diff --git a/package.json b/package.json index dfc885c9adbe0..7068eef3fe2c3 100644 --- a/package.json +++ b/package.json @@ -60,7 +60,7 @@ "@nrwl/js": "14.7.16", "@nrwl/linter": "14.7.16", "@nrwl/next": "14.7.16", - "@nrwl/nx-cloud": "14.6.2", + "@nrwl/nx-cloud": "14.7.0-beta.1", "@nrwl/react": "14.7.16", "@nrwl/web": "14.7.16", "@parcel/watcher": "2.0.4", diff --git a/packages/nx/src/utils/logger.spec.ts b/packages/nx/src/utils/logger.spec.ts deleted file mode 100644 index 6aee352afdee3..0000000000000 --- a/packages/nx/src/utils/logger.spec.ts +++ /dev/null @@ -1,62 +0,0 @@ -import { logger } from './logger'; - -describe('Logger', () => { - it('should color the NX prefix', () => { - let logObject; - jest.spyOn(console, 'info').mockImplementation((message) => { - logObject = message; - }); - - logger.info('NX some Nx message!'); - - if (process.env.CI === undefined) { - expect(logObject).toMatchInlineSnapshot(` - " - >  NX  some Nx message! - " - `); - } else { - expect(logObject).toMatchInlineSnapshot(` - " - > NX some Nx message! - " - `); - } - }); - - it('should log the full stack trace when an object is being passed', () => { - let logObject; - jest.spyOn(console, 'error').mockImplementation((message) => { - logObject = message; - }); - - const err = new Error( - 'TypeError: Cannot read property target of undefined' - ); - err.stack = `TypeError: Cannot read property 'target' of undefined - at /someuser/node_modules/@storybook/angular/dist/ts3.9/server/angular-devkit-build-webpack.js:145:49 - at step (/someuser/node_modules/@storybook/angular/dist/ts3.9/server/angular-devkit-build-webpack.js:69:23) - at Object.next (/someuser/node_modules/@storybook/angular/dist/ts3.9/server/angular-devkit-build-webpack.js:50:53) - at fulfilled (/someuser/node_modules/@storybook/angular/dist/ts3.9/server/angular-devkit-build-webpack.js:41:58)`; - - logger.error(err); - - if (process.env.CI === undefined) { - expect(logObject).toMatchInlineSnapshot(` - "TypeError: Cannot read property 'target' of undefined -  at /someuser/node_modules/@storybook/angular/dist/ts3.9/server/angular-devkit-build-webpack.js:145:49 -  at step (/someuser/node_modules/@storybook/angular/dist/ts3.9/server/angular-devkit-build-webpack.js:69:23) -  at Object.next (/someuser/node_modules/@storybook/angular/dist/ts3.9/server/angular-devkit-build-webpack.js:50:53) -  at fulfilled (/someuser/node_modules/@storybook/angular/dist/ts3.9/server/angular-devkit-build-webpack.js:41:58)" - `); - } else { - expect(logObject).toMatchInlineSnapshot(` - "TypeError: Cannot read property 'target' of undefined - at /someuser/node_modules/@storybook/angular/dist/ts3.9/server/angular-devkit-build-webpack.js:145:49 - at step (/someuser/node_modules/@storybook/angular/dist/ts3.9/server/angular-devkit-build-webpack.js:69:23) - at Object.next (/someuser/node_modules/@storybook/angular/dist/ts3.9/server/angular-devkit-build-webpack.js:50:53) - at fulfilled (/someuser/node_modules/@storybook/angular/dist/ts3.9/server/angular-devkit-build-webpack.js:41:58)" - `); - } - }); -}); diff --git a/packages/workspace/src/utilities/buildable-libs-utils.spec.ts b/packages/workspace/src/utilities/buildable-libs-utils.spec.ts index e3c30cfd39dc8..582df9d2bc709 100644 --- a/packages/workspace/src/utilities/buildable-libs-utils.spec.ts +++ b/packages/workspace/src/utilities/buildable-libs-utils.spec.ts @@ -103,7 +103,7 @@ describe('missingDependencies', () => { example: [ { source: 'example', - target: 'npm:formik', + target: 'missing', type: DependencyType.static, }, ], diff --git a/packages/workspace/src/utilities/buildable-libs-utils.ts b/packages/workspace/src/utilities/buildable-libs-utils.ts index 735eca26d9b96..b000104625949 100644 --- a/packages/workspace/src/utilities/buildable-libs-utils.ts +++ b/packages/workspace/src/utilities/buildable-libs-utils.ts @@ -128,6 +128,14 @@ function collectDependencies( ): { name: string; isTopLevel: boolean }[] { (projGraph.dependencies[project] || []).forEach((dependency) => { if (!acc.some((dep) => dep.name === dependency.target)) { + // Temporary skip this. Currently the set of external nodes is built from package.json, not lock file. + // As a result, some nodes might be missing. This should not cause any issues, we can just skip them. + if ( + dependency.target.startsWith('npm:') && + !projGraph.externalNodes[dependency.target] + ) + return; + acc.push({ name: dependency.target, isTopLevel: areTopLevelDeps }); if (!shallow) { collectDependencies(dependency.target, projGraph, acc, shallow, false); diff --git a/yarn.lock b/yarn.lock index 9bd780863869e..b8a8ef5a94dd4 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3811,14 +3811,15 @@ url-loader "^4.1.1" webpack-merge "^5.8.0" -"@nrwl/nx-cloud@14.6.2": - version "14.6.2" - resolved "https://registry.yarnpkg.com/@nrwl/nx-cloud/-/nx-cloud-14.6.2.tgz#2eef39b790ba93a7003042c4045981327a64af0c" - integrity sha512-w8ujbFMOxE7lJg52O3JjnpTGlBKc+/vovxVTplIfGU9TYgEgAo/v4HS9svztzGd9Era7qmNaoYOmxm6Ebtbo5g== +"@nrwl/nx-cloud@14.7.0-beta.1": + version "14.7.0-beta.1" + resolved "https://registry.yarnpkg.com/@nrwl/nx-cloud/-/nx-cloud-14.7.0-beta.1.tgz#7d59370465f83bc753b27ec04bed734d11f8b611" + integrity sha512-BRV7EPOlCPB9O6sjNOZSrmjb9u9n0AAcdWYkV5bg6RJIv8kjYri6IU2tYk7+mOPayDbINYN09UiTKycCWoMyLg== dependencies: axios "^0.21.1" chalk "4.1.0" dotenv "~10.0.0" + fs-extra "^10.1.0" node-machine-id "^1.1.12" strip-json-comments "^3.1.1" tar "6.1.11"