Skip to content

Build fails with Cannot redefine property: File using Node 20.6.0 #25782

Closed as not planned

Description

@Yogu

Command

build

Is this a regression?

  • Yes, this behavior used to work in the previous version

The previous version in which this bug was not present was

No response

Description

If you use Node 20.6.0 (released yesterday) to build an Angular 16 papp, the following error occurs:

TypeError: Cannot redefine property: File
    at Function.defineProperty (<anonymous>)
    at Object.<anonymous> (/home/user/my-project/node_modules/@angular/compiler-cli/node_modules/@babel/core/lib/index.js:7:8)

I know Node 20 is not officially supported at the moment and it's not yet in LTS, but it worked before (in 20.5.1) and maybe it's good too approach this issue early. The relevant changes in Node might get backported to node 18.

I also don't know yet if this is an issue in Node, babel or angular-cli. In either case, it might be good to have this as a tracking issue.

Also affects Angular 15 and Angular 17.0.0-next.0.

Minimal Reproduction

nvm install 20.6.0
nvm use 20.6.0
npx @angular/cli@latest new my-project # (using defaults)
cd my-project
npx ng build

Exception or Error

⠇ Generating browser application bundles (phase: building)...node:internal/process/promises:289
            triggerUncaughtException(err, true /* fromPromise */);
            ^

TypeError: Cannot redefine property: File
    at Function.defineProperty (<anonymous>)
    at Object.<anonymous> (/home/user/my-project/node_modules/@angular/compiler-cli/node_modules/@babel/core/lib/index.js:7:8)
    at Module._compile (node:internal/modules/cjs/loader:1241:14)
    at Module._extensions..js (node:internal/modules/cjs/loader:1295:10)
    at Module.load (node:internal/modules/cjs/loader:1091:32)
    at Module._load (node:internal/modules/cjs/loader:938:12)
    at Module.require (node:internal/modules/cjs/loader:1115:19)
    at require (node:internal/modules/helpers:130:18)
    at Object.<anonymous> (/home/user/my-project/node_modules/@angular/compiler-cli/node_modules/@babel/core/lib/config/helpers/config-api.js:16:9)
    at Module._compile (node:internal/modules/cjs/loader:1241:14)
    at Module._extensions..js (node:internal/modules/cjs/loader:1295:10)
    at Module.load (node:internal/modules/cjs/loader:1091:32)
    at Module._load (node:internal/modules/cjs/loader:938:12)
    at Module.require (node:internal/modules/cjs/loader:1115:19)
    at require (node:internal/modules/helpers:130:18)
    at Object.<anonymous> (/home/user/my-project/node_modules/@angular/compiler-cli/node_modules/@babel/core/lib/config/files/configuration.js:48:18)
    at Module._compile (node:internal/modules/cjs/loader:1241:14)
    at Module._extensions..js (node:internal/modules/cjs/loader:1295:10)
    at Module.load (node:internal/modules/cjs/loader:1091:32)
    at Module._load (node:internal/modules/cjs/loader:938:12)
    at Module.require (node:internal/modules/cjs/loader:1115:19)
    at require (node:internal/modules/helpers:130:18)
    at Object.<anonymous> (/home/user/my-project/node_modules/@angular/compiler-cli/node_modules/@babel/core/lib/config/files/index.js:73:22)
    at Module._compile (node:internal/modules/cjs/loader:1241:14)
    at Module._extensions..js (node:internal/modules/cjs/loader:1295:10)
    at Module.load (node:internal/modules/cjs/loader:1091:32)
    at Module._load (node:internal/modules/cjs/loader:938:12)
    at Module.require (node:internal/modules/cjs/loader:1115:19)
    at require (node:internal/modules/helpers:130:18)
    at Object.<anonymous> (/home/user/my-project/node_modules/@angular/compiler-cli/node_modules/@babel/core/lib/index.js:184:14)
    at Module._compile (node:internal/modules/cjs/loader:1241:14)
    at Module._extensions..js (node:internal/modules/cjs/loader:1295:10)
    at Module.load (node:internal/modules/cjs/loader:1091:32)
    at cjsLoader (node:internal/modules/esm/translators:282:14)
    at ModuleWrap.<anonymous> (node:internal/modules/esm/translators:233:7)
    at ModuleJob.run (node:internal/modules/esm/module_job:217:25)
    at async ModuleLoader.import (node:internal/modules/esm/loader:308:24)
    at async importModuleDynamicallyWrapper (node:internal/vm/module:428:15)
    at async Object.customOptions (/home/user/my-project/node_modules/@angular-devkit/build-angular/src/tools/babel/webpack-loader.js:49:64)
    at async Object.loader (/home/user/my-project/node_modules/babel-loader/lib/index.js:67:20)

Node.js v20.6.0

Your Environment

_                      _                 ____ _     ___
    / \   _ __   __ _ _   _| | __ _ _ __     / ___| |   |_ _|
   / △ \ | '_ \ / _` | | | | |/ _` | '__|   | |   | |    | |
  / ___ \| | | | (_| | |_| | | (_| | |      | |___| |___ | |
 /_/   \_\_| |_|\__, |\__,_|_|\__,_|_|       \____|_____|___|
                |___/


Angular CLI: 16.2.1
Node: 20.6.0 (Unsupported)
Package Manager: npm 9.8.1
OS: linux x64

Angular: 16.2.3
... animations, common, compiler, compiler-cli, core, forms
... platform-browser, platform-browser-dynamic, router

Package                         Version
---------------------------------------------------------
@angular-devkit/architect       0.1602.1
@angular-devkit/build-angular   16.2.1
@angular-devkit/core            16.2.1
@angular-devkit/schematics      16.2.1
@angular/cli                    16.2.1
@schematics/angular             16.2.1
rxjs                            7.8.1
typescript                      5.1.6
zone.js                         0.13.1

Warning: The current version of Node (20.6.0) is not supported by Angular.

Anything else relevant?

No response

Activity

  1. hhfrancois commented on Sep 6, 2023

    @hhfrancois

    force node 20.5 fix the issues
    Thx

  2. ogabz12345 commented on Sep 6, 2023

    @ogabz12345

    @hhfrancois FROM node:20.5 AS build ?

  3. ogabz12345 commented on Sep 6, 2023

    @ogabz12345

    Finally worked. used FROM node:18-alpine3.17 AS build

  4. mritalian commented on Sep 6, 2023

    @mritalian

    Automated testing that would catch this is hard

  5. gilbertotoledo commented on Sep 6, 2023

    @gilbertotoledo

    node:18-alpine3.17 AS build worked for me! Tks @minikdev !

  6. Alex-Lip-Video commented on Sep 6, 2023

    @Alex-Lip-Video

    Replacing FROM node:20-alpine3.17 with FROM node:20.5-alpine3.17 worked for me. Thank you @hhfrancois and @lazybobcat 👍🏼

  7. mkabatek commented on Sep 6, 2023

    @mkabatek

    Github actions fails for my project today and it worked yesterday. Downgraded to node 18 and it works fine.

    TypeError: Cannot redefine property: File
        at Function.defineProperty (<anonymous>)
        at Object.<anonymous> (... /node_modules/@babel/core/lib/index.js:7:8)
        at Module._compile (node:internal/modules/cjs/loader:1241:14)
        at Module._extensions..js (node:internal/modules/cjs/loader:1295:10)
        at Module.load (node:internal/modules/cjs/loader:1091:32)
        at Module._load (node:internal/modules/cjs/loader:938:12)
        at Module.require (node:internal/modules/cjs/loader:1115:19)
        at require (node:internal/modules/helpers:130:18)
        at Object.<anonymous> (... /node_modules/@babel/core/lib/config/helpers/config-api.js:16:9)
        at Module._compile (node:internal/modules/cjs/loader:1241:14)
    error Command failed with exit code 1.
    info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.
    
    Run actions/setup-node@v3
    Attempting to download 20...
    Acquiring 20.6.0 - x64 from https://github.com/actions/node-versions/releases/download/20.6.0-60927[1](https://github.com/FieldSync/fieldsync-web/actions/runs/6103441625/job/16563842646#step:9:1)[50](https://github.com/FieldSync/fieldsync-web/actions/runs/6103441625/job/16563842646#step:9:51)08/node-20.6.0-linux-x64.tar.gz
    Extracting ...
    /usr/bin/tar xz --strip 1 --warning=no-unknown-keyword -C /home/runner/work/_temp/5c133a3b-27be-4e1d-bc75-0ca91dbffb58 -f /home/runner/work/_temp/5bc8e4d5-2a02-4a3b-88fb-d445f3f5612c
    Adding to the cache ...
    Environment details
      node: v20.6.0
      npm: 9.8.1
      yarn: 1.22.19
     
    

    For anyone facing this problem using Github actions on a project change to

          - name: Use Node@18.x
            uses: actions/setup-node@v3
            with:
              node-version: 18
    
  8. dustinnewman commented on Sep 7, 2023

    @dustinnewman

    On macOS using homebrew, you can fix this for now by installing the git HEAD for node (fixed by nodejs/node#49500) until the next version includes the fix:

    brew unlink node
    brew install --HEAD node
    

    Note this makes node from scratch locally, which takes considerably longer than typical brew install.

  9. added a commit that references this issue on Sep 7, 2023
  10. tdkehoe commented on Sep 7, 2023

    @tdkehoe

    Switching from Node 20.6.0 to Node 18.17.1 fixed the problem for me. nvm makes it easy to change Node versions.

  11. added a commit that references this issue on Sep 7, 2023
  12. dawidfreelancer commented on Sep 8, 2023

    @dawidfreelancer

    I had same issue. Punishment for using latest node version in Dockerfile :D

  13. nicolo-ribaudo commented on Sep 8, 2023

    @nicolo-ribaudo
    Contributor

    We added a workaround for this in @babel/core, @babel/traverse and @babel/types 7.22.17

  14. added a commit that references this issue on Sep 10, 2023
  15. marquessbr commented on Sep 14, 2023

    @marquessbr

    I had the same problem in a project and I tried with version 20, the project didn't compile with prayer or macumba, much less with voodoo, I had to downgrade to version 18 and then it worked.

  16. nicolo-ribaudo commented on Sep 14, 2023

    @nicolo-ribaudo
    Contributor

    @marquessbr You can also use 20.6.1. Only 20.6.0 had this bug.

  17. marquessbr commented on Sep 14, 2023

    @marquessbr

    @marquessbr You can also use 20.6.1. Only 20.6.0 had this bug.

    cool!
    Thanks man, maybe I'll need to use a newer version of node because my professor is just giving classes about signals and NgRx, but since I'm using NVM, it's easy to migrate between versions when I need to.

  18. SSerg-dev commented on Sep 17, 2023

    @SSerg-dev

    @marquessbr You can also use 20.6.1. Only 20.6.0 had this bug.

    thank you,
    I have a problem like this.
    It a realy work
    👍

  19. PremVarma01 commented on Oct 3, 2023

    @PremVarma01

    Try changing you node version. I mean you can downgrade and try.

  20. angular-automatic-lock-bot commented on Nov 3, 2023

    @angular-automatic-lock-bot

    This issue has been automatically locked due to inactivity.
    Please file a new issue if you are encountering a similar or related problem.

    Read more about our automatic conversation locking policy.

    This action has been performed automatically by a bot.

  21. locked and limited conversation to collaborators on Nov 3, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions