nx icon indicating copy to clipboard operation
nx copied to clipboard

Cannot read properties of undefined (reading 'data')

Open SirPhemmiey opened this issue 1 year ago โ€ข 15 comments

Current Behavior

When usingyarn as package manager and trying to build a project that contains "generatePackageJson": true option, build target is failing

Expected Behavior

It should build

GitHub Repo

No response

Steps to Reproduce

  1. Include generatePackageJson in your target build project.json
  2. run yarn build <project>

Nx Report

Node   : 20.9.0
OS     : darwin-arm64
yarn   : 1.22.19

nx (global)        : 17.0.3
nx                 : 18.1.2
@nx/js             : 18.1.2
@nx/jest           : 18.1.2
@nx/linter         : 18.0.8
@nx/eslint         : 18.0.8
@nx/workspace      : 18.1.2
@nx/cypress        : 18.1.2
@nx/devkit         : 18.1.2
@nx/eslint-plugin  : 18.1.2
@nx/nest           : 18.1.2
@nx/node           : 18.1.2
@nx/plugin         : 18.1.2
@nx/react          : 18.1.2
@nx/rollup         : 18.1.2
@nrwl/tao          : 18.1.2
@nx/web            : 18.1.2
@nx/webpack        : 18.1.2
typescript         : 5.3.3

Failure Logs

TypeError: Cannot read properties of undefined (reading 'data')
    at /Users/oluwafem.iakinde/Documents/adtech-monorepo/node_modules/nx/src/plugins/js/package-json/create-package-json.js:124:55
    at Array.forEach (<anonymous>)
    at findProjectsNpmDependencies (/Users/oluwafem.iakinde/Documents/adtech-monorepo/node_modules/nx/src/plugins/js/package-json/create-package-json.js:122:33)
    at createPackageJson (/Users/oluwafem.iakinde/Documents/adtech-monorepo/node_modules/nx/src/plugins/js/package-json/create-package-json.js:23:21)
    at /Users/oluwafem.iakinde/Documents/adtech-monorepo/node_modules/@nx/webpack/src/plugins/generate-package-json-plugin.js:30:64
    at fn (/Users/oluwafem.iakinde/Documents/adtech-monorepo/node_modules/webpack/lib/Compilation.js:478:10)
    at Hook.eval [as callAsync] (eval at create (/Users/oluwafem.iakinde/Documents/adtech-monorepo/node_modules/tapable/lib/HookCodeFactory.js:33:10), <anonymous>:10:1)
    at Hook.CALL_ASYNC_DELEGATE [as _callAsync] (/Users/oluwafem.iakinde/Documents/adtech-monorepo/node_modules/tapable/lib/Hook.js:18:14)
    at cont (/Users/oluwafem.iakinde/Documents/adtech-monorepo/node_modules/webpack/lib/Compilation.js:3059:34)
    at /Users/oluwafem.iakinde/Documents/adtech-monorepo/node_modules/webpack/lib/Compilation.js:3107:10

Package Manager Version

1.22.19

Operating System

  • [X] macOS
  • [ ] Linux
  • [ ] Windows
  • [ ] Other (Please specify)

Additional Information

It's the same issue as this: https://github.com/nrwl/nx/issues/17450

SirPhemmiey avatar Mar 25 '24 00:03 SirPhemmiey

I will be closing this as i've found out that simply updating webpack to the latest version will most likely fix this. Current version is v5.91.0

SirPhemmiey avatar Mar 25 '24 13:03 SirPhemmiey

I reopened this again because i had to remove yarn.lock from .nxignore for it to work. I initially added yarn.lock to .nxignore because of this

SirPhemmiey avatar Mar 25 '24 13:03 SirPhemmiey

Hi @SirPhemmiey, the issue you see above is caused by our parser being unable to properly prune the lock file.

In order to debug this issue, can you please create a small reproduction repo?

meeroslav avatar Mar 26 '24 09:03 meeroslav

This issue has been automatically marked as stale because it hasn't had any recent activity. It will be closed in 14 days if no further activity occurs. If we missed this issue please reply to keep it active. Thanks for being a part of the Nx community! ๐Ÿ™

github-actions[bot] avatar Apr 12 '24 00:04 github-actions[bot]

I've just run into this issue too, completely out of the blue. I can stash my current changes and it will build, unstash and I get this error building my nestjs app and generating package json.

Summary of my project:

  • Macos
  • Nx 18.3.3
  • Node 20.5.1
  • Pnpm 9.0.4
  • Webpack (@nx/webpack 18.3.3)
  • SWC (core 1.4.16, helpers 0.5.10)

Summary of what I know regarding the problem context:

  • I've upgraded webpack and all other dependencies I can think of
  • It seems to have been triggered by adding MSW, although the NestJS project does not reference it
  • It's happening in findProjectsNpmDependencies on line 124 image
  • dep has a value of npm:tslib
  • npmDeps.dependencies is an empty object

Not sure if I could create a reproducible given the fragiligty of this instance, however if someone wants to help me get more information about this I'm more than happy to help!

treefitty avatar Apr 20 '24 20:04 treefitty

adding more context through my extremely naive debugging...

The graph.externalNodes object is huge (expected) and has the following tslib keys:

image

Which makes sense why npm:tslib is not matching

Also, options.helperDependencies only contains npm:tslib and nothing else

treefitty avatar Apr 20 '24 20:04 treefitty

Ok, I finally reverted pnpm from 9.0.4 to 8.15.7 and everything is working again

treefitty avatar Apr 21 '24 06:04 treefitty

@meeroslav Could you please look into this? I have exactly the same problem recently and it only appeared when I started using the new version of pnpm which is 9.0.4 Of course, reverting to pnpm 8.15.7 solves this problem but how about me this is only a temporary solution, because it should be fixed for v9.x as well, as this PR-17407 solved the same problem only for the v6.x version

P.S. I think that there is no need to create a reproduction repo for this, because the problem is obvious ;)

Alex-Dolid avatar Apr 22 '24 19:04 Alex-Dolid

+1 can confirm, reverting to 8.15.7 solves the problem for me

ertl avatar Apr 23 '24 11:04 ertl

Same problem here, when trying to update to pnpm 9.0.6, the generatePackageJson=true option + nx 17.2.8, throws this error building the backend: "Your library compilation option specifies that the compiler external helper (tslib) is needed but it is not installed. Cannot read properties of undefined (reading 'data')". I can confirm that tslib is on the dependencies list and that I performed a pnpm install As many of you said, pnpm 8.15.7 works fine, so that's what I'm using in the meantime.

Shirueopseo avatar Apr 25 '24 08:04 Shirueopseo

I have the same issue with yarn 1.22.

1. Upgrading to Nx 18+ create issue on a project using generatePackageJson:true:

Your library compilation option specifies that the compiler external helper (tslib) is needed but it is not installed.

 NX   Cannot read properties of undefined (reading 'data')

Related: https://github.com/nrwl/nx/issues/19092

2. It is related to the importHelpers configuration which requires tslib to be present in externalDependencies

Related https://github.com/nrwl/nx/issues/19092#issuecomment-1766229597

3. externalDependencies is empty

Related https://github.com/nrwl/nx/issues/19092#issuecomment-1738821054

4. externalDependencies is empty because the yarn.lock was added to .nxignore

5. Removing yarn.lock from .nxignore fix the problem

6. yarn.lock was added to .nxignore to avoid having all projects affected when modified

Related: https://github.com/nrwl/nx/issues/15116

It look like the chicken and the egg problem ;)

@meeroslav What do you suggest for not affecting all projects when modifying yarn.lock but not having errors when building app-required helpers not present in external dependencies?

jogelin avatar May 07 '24 08:05 jogelin

This is also an issue for me when trying to use pnpm seems that there is some kind of dependency negotiation that breaks with the nx generatePackageJson for webpack

bneigher avatar May 08 '24 18:05 bneigher

This issue has been automatically marked as stale because no reproduction was provided within 7 days. Please help us help you. Providing a repository exhibiting the issue helps us diagnose and fix the issue. Any time that we spend reproducing this issue is time taken away from addressing this issue and other issues. This issue will be closed in 21 days if a reproduction is not provided. If a reproduction has been provided, please reply to keep it active. Thanks for being a part of the Nx community! ๐Ÿ™

github-actions[bot] avatar May 16 '24 00:05 github-actions[bot]

No, this is not stale

treefitty avatar May 16 '24 06:05 treefitty

Bumping this. Also on pnpm v9 and generatePackageJson: true. I'd like to use SWC instead of webpack but that is still not possible despite upstream nestjs supporting it (https://github.com/nrwl/nx/discussions/22632)

Clashsoft avatar May 18 '24 15:05 Clashsoft

This issue has been automatically marked as stale because no reproduction was provided within 7 days. Please help us help you. Providing a repository exhibiting the issue helps us diagnose and fix the issue. Any time that we spend reproducing this issue is time taken away from addressing this issue and other issues. This issue will be closed in 21 days if a reproduction is not provided. If a reproduction has been provided, please reply to keep it active. Thanks for being a part of the Nx community! ๐Ÿ™

github-actions[bot] avatar May 26 '24 00:05 github-actions[bot]

Not stale. Reproduction is trivial. npm i -g [email protected] && pnpx create-nx-workspace && cd whatever && pnpm i @nx/nest && nx g @nx/nest:app myapp && nx build myapp

Clashsoft avatar May 26 '24 07:05 Clashsoft

@Clashsoft, the original issue was opened for yarn v1 not pnpm.

The pnpm v9 support has been merged in 2 days ago and hasn't been released yet - https://github.com/nrwl/nx/pull/22906.

The fix for pnpm v9 will be rolled out in 19.2.0.

meeroslav avatar May 29 '24 08:05 meeroslav

@jogelin, the generatePackageJson (and our hasher) depends on Nx being able to parse your lock file. Otherwise there will be no external dependencies to pick from to generate package json.

If you add the lock file to .nxignore, then parsing of the lock file will be skipped and your project graph would be incomplete (all the external nodes would be missing). This then leads to further issues, as you have experienced.

Changing the lock file is supposed to affect the entire graph, as depending on the target used each project might be affected. This doesn't mean that all those targets would be invoked, since our hasher takes care of calculating which packages influence your project (both directly via explicit import and via target executor).

meeroslav avatar May 29 '24 08:05 meeroslav

Since there was no reproduction provided and the subsequent responses were unrelated to the original issue, we are closing it.

If you have an issue with package json generation or lock file pruning, please open new issue and make sure to provide reproduction or at least:

  • original root package.json and lock file
  • generated package.json and pruned lock file

Thank you

meeroslav avatar May 29 '24 08:05 meeroslav

I am having a similar issue when upgrading to pnpm 9

 NX   Report complete - copy this into the issue template

Node   : 20.14.0
OS     : linux-x64
pnpm   : 9.1.4

nx                 : 19.1.1
@nx/js             : 19.1.1
@nx/jest           : 19.1.1
@nx/linter         : 19.1.1
@nx/eslint         : 19.1.1
@nx/workspace      : 19.1.1
@nx/cypress        : 19.1.1
@nx/devkit         : 19.1.1
@nx/eslint-plugin  : 19.1.1
@nx/express        : 19.1.1
@nx/nest           : 19.1.1
@nx/next           : 19.1.1
@nx/node           : 19.1.1
@nx/playwright     : 19.1.1
@nx/react          : 19.1.1
@nx/remix          : 19.1.1
@nx/storybook      : 19.1.1
@nrwl/tao          : 19.1.1
@nx/vite           : 19.1.1
@nx/web            : 19.1.1
@nx/webpack        : 19.1.1
typescript         : 5.4.5
---------------------------------------
Registered Plugins:
@nx/remix/plugin
---------------------------------------
Community plugins:
@compodoc/compodoc     : 1.1.24
@nx-tools/nx-container : 5.3.1
@twittwer/compodoc     : 1.12.0
> nx run my-nest-app:serve:development

node:internal/process/promises:289
            triggerUncaughtException(err, true /* fromPromise */);
            ^

HookWebpackError: Cannot read properties of undefined (reading 'data')
    at makeWebpackError (/my-workspace/node_modules/.pnpm/[email protected]_@[email protected]_@[email protected][email protected]/node_modules/webpack/lib/HookWebpackError.js:48:9)
    at /my-workspace/node_modules/.pnpm/[email protected]_@[email protected]_@[email protected][email protected]/node_modules/webpack/lib/Compilation.js:3175:12
    at eval (eval at create (/my-workspace/node_modules/.pnpm/[email protected]/node_modules/tapable/lib/HookCodeFactory.js:33:10), <anonymous>:13:1)
    at fn (/my-workspace/node_modules/.pnpm/[email protected]_@[email protected]_@[email protected][email protected]/node_modules/webpack/lib/Compilation.js:488:17)
    at _next0 (eval at create (/my-workspace/node_modules/.pnpm/[email protected]/node_modules/tapable/lib/HookCodeFactory.js:33:10), <anonymous>:11:1)
    at eval (eval at create (/my-workspace/node_modules/.pnpm/[email protected]/node_modules/tapable/lib/HookCodeFactory.js:33:10), <anonymous>:24:1)
    at Hook.eval [as callAsync] (eval at create (/my-workspace/node_modules/.pnpm/[email protected]/node_modules/tapable/lib/HookCodeFactory.js:33:10), <anonymous>:6:1)
    at Hook.CALL_ASYNC_DELEGATE [as _callAsync] (/my-workspace/node_modules/.pnpm/[email protected]/node_modules/tapable/lib/Hook.js:18:14)
    at /my-workspace/node_modules/.pnpm/[email protected]_@[email protected]_@[email protected][email protected]/node_modules/webpack/lib/Compilation.js:523:46
    at /my-workspace/node_modules/.pnpm/[email protected][email protected]_@[email protected]_@[email protected][email protected]_/node_modules/copy-webpack-plugin/dist/index.js:909:9
-- inner error --
TypeError: Cannot read properties of undefined (reading 'data')
    at /my-workspace/node_modules/.pnpm/[email protected]_@[email protected]_@[email protected]_@[email protected]__@[email protected]_typ_d6ipsl3ynuwwpvemuhs5daz6gm/node_modules/nx/src/plugins/js/package-json/create-package-json.js:124:55
    at Array.forEach (<anonymous>)
    at findProjectsNpmDependencies (/my-workspace/node_modules/.pnpm/[email protected]_@[email protected]_@[email protected]_@[email protected]__@[email protected]_typ_d6ipsl3ynuwwpvemuhs5daz6gm/node_modules/nx/src/plugins/js/package-json/create-package-json.js:122:33)
    at createPackageJson (/my-workspace/node_modules/.pnpm/[email protected]_@[email protected]_@[email protected]_@[email protected]__@[email protected]_typ_d6ipsl3ynuwwpvemuhs5daz6gm/node_modules/nx/src/plugins/js/package-json/create-package-json.js:23:21)
    at /my-workspace/node_modules/.pnpm/@[email protected]_@[email protected]_@[email protected]_@[email protected]_@swc+help_ktiouz2rcdl3zfdz4lex7hmtwi/node_modules/@nx/webpack/src/plugins/generate-package-json-plugin.js:30:64
    at fn (/my-workspace/node_modules/.pnpm/[email protected]_@[email protected]_@[email protected][email protected]/node_modules/webpack/lib/Compilation.js:486:10)
    at _next0 (eval at create (/my-workspace/node_modules/.pnpm/[email protected]/node_modules/tapable/lib/HookCodeFactory.js:33:10), <anonymous>:11:1)
    at eval (eval at create (/my-workspace/node_modules/.pnpm/[email protected]/node_modules/tapable/lib/HookCodeFactory.js:33:10), <anonymous>:24:1)
    at Hook.eval [as callAsync] (eval at create (/my-workspace/node_modules/.pnpm/[email protected]/node_modules/tapable/lib/HookCodeFactory.js:33:10), <anonymous>:6:1)
    at Hook.CALL_ASYNC_DELEGATE [as _callAsync] (/my-workspace/node_modules/.pnpm/[email protected]/node_modules/tapable/lib/Hook.js:18:14) {
  details: 'caused by plugins in Compilation.hooks.processAssets\n' +
    "TypeError: Cannot read properties of undefined (reading 'data')\n" +
    '    at /my-workspace/node_modules/.pnpm/[email protected]_@[email protected]_@[email protected]_@[email protected]__@[email protected]_typ_d6ipsl3ynuwwpvemuhs5daz6gm/node_modules/nx/src/plugins/js/package-json/create-package-json.js:124:55\n' +
    '    at Array.forEach (<anonymous>)\n' +
    '    at findProjectsNpmDependencies (/my-workspace/node_modules/.pnpm/[email protected]_@[email protected]_@[email protected]_@[email protected]__@[email protected]_typ_d6ipsl3ynuwwpvemuhs5daz6gm/node_modules/nx/src/plugins/js/package-json/create-package-json.js:122:33)\n' +
    '    at createPackageJson (/my-workspace/node_modules/.pnpm/[email protected]_@[email protected]_@[email protected]_@[email protected]__@[email protected]_typ_d6ipsl3ynuwwpvemuhs5daz6gm/node_modules/nx/src/plugins/js/package-json/create-package-json.js:23:21)\n' +
    '    at /my-workspace/node_modules/.pnpm/@[email protected]_@[email protected]_@[email protected]_@[email protected]_@swc+help_ktiouz2rcdl3zfdz4lex7hmtwi/node_modules/@nx/webpack/src/plugins/generate-package-json-plugin.js:30:64\n' +
    '    at fn (/my-workspace/node_modules/.pnpm/[email protected]_@[email protected]_@[email protected][email protected]/node_modules/webpack/lib/Compilation.js:486:10)\n' +
    '    at _next0 (eval at create (/my-workspace/node_modules/.pnpm/[email protected]/node_modules/tapable/lib/HookCodeFactory.js:33:10), <anonymous>:11:1)\n' +
    '    at eval (eval at create (/my-workspace/node_modules/.pnpm/[email protected]/node_modules/tapable/lib/HookCodeFactory.js:33:10), <anonymous>:24:1)\n' +
    '    at Hook.eval [as callAsync] (eval at create (/my-workspace/node_modules/.pnpm/[email protected]/node_modules/tapable/lib/HookCodeFactory.js:33:10), <anonymous>:6:1)\n' +
    '    at Hook.CALL_ASYNC_DELEGATE [as _callAsync] (/my-workspace/node_modules/.pnpm/[email protected]/node_modules/tapable/lib/Hook.js:18:14)',
  module: undefined,
  loc: undefined,
  hideStack: true,
  chunk: undefined,
  file: undefined,
  hook: 'Compilation.hooks.processAssets',
  error: TypeError: Cannot read properties of undefined (reading 'data')
      at /my-workspace/node_modules/.pnpm/[email protected]_@[email protected]_@[email protected]_@[email protected]__@[email protected]_typ_d6ipsl3ynuwwpvemuhs5daz6gm/node_modules/nx/src/plugins/js/package-json/create-package-json.js:124:55
      at Array.forEach (<anonymous>)
      at findProjectsNpmDependencies (/my-workspace/node_modules/.pnpm/[email protected]_@[email protected]_@[email protected]_@[email protected]__@[email protected]_typ_d6ipsl3ynuwwpvemuhs5daz6gm/node_modules/nx/src/plugins/js/package-json/create-package-json.js:122:33)
      at createPackageJson (/my-workspace/node_modules/.pnpm/[email protected]_@[email protected]_@[email protected]_@[email protected]__@[email protected]_typ_d6ipsl3ynuwwpvemuhs5daz6gm/node_modules/nx/src/plugins/js/package-json/create-package-json.js:23:21)
      at /my-workspace/node_modules/.pnpm/@[email protected]_@[email protected]_@[email protected]_@[email protected]_@swc+help_ktiouz2rcdl3zfdz4lex7hmtwi/node_modules/@nx/webpack/src/plugins/generate-package-json-plugin.js:30:64
      at fn (/my-workspace/node_modules/.pnpm/[email protected]_@[email protected]_@[email protected][email protected]/node_modules/webpack/lib/Compilation.js:486:10)
      at _next0 (eval at create (/my-workspace/node_modules/.pnpm/[email protected]/node_modules/tapable/lib/HookCodeFactory.js:33:10), <anonymous>:11:1)
      at eval (eval at create (/my-workspace/node_modules/.pnpm/[email protected]/node_modules/tapable/lib/HookCodeFactory.js:33:10), <anonymous>:24:1)
      at Hook.eval [as callAsync] (eval at create (/my-workspace/node_modules/.pnpm/[email protected]/node_modules/tapable/lib/HookCodeFactory.js:33:10), <anonymous>:6:1)
      at Hook.CALL_ASYNC_DELEGATE [as _callAsync] (/my-workspace/node_modules/.pnpm/[email protected]/node_modules/tapable/lib/Hook.js:18:14)
}

Node.js v20.14.0

is there anything im missing?

i can try to create a reproduction as well

lwhiteley avatar Jun 03 '24 08:06 lwhiteley

@lwhiteley I think it should be ok with the future v19.2 of Nx: image

Maybe you should try beta ~19.2.0-beta.5: nx migrate 19.2.0-beta.5 to know if the v19.2 is fixing it ;)

jogelin avatar Jun 03 '24 09:06 jogelin

Thanks for pointing that out @jogelin

you're a lifesaver!

i can confirm the fix works

lwhiteley avatar Jun 03 '24 10:06 lwhiteley

This issue has been closed for more than 30 days. If this issue is still occuring, please open a new issue with more recent context.

github-actions[bot] avatar Jul 06 '24 00:07 github-actions[bot]