Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

npx NOENT error #24

Open
Tarang opened this issue Jan 24, 2021 · 13 comments
Open

npx NOENT error #24

Tarang opened this issue Jan 24, 2021 · 13 comments

Comments

@Tarang
Copy link

Tarang commented Jan 24, 2021

I keep getting this error

Error: There was an error when attempting to execute the process '/opt/hostedtoolcache/node/12.20.0/x64/bin/npx'. This may indicate the process failed to start. Error: spawn /opt/hostedtoolcache/node/12.20.0/x64/bin/npx ENOENT

I'm a bit unsure what is causing it. I have copied and pasted the yaml on the README pretty much verbatim and used my credentials. I can see there is a related closed issue #13 but it was not resolved.

@Tarang Tarang changed the title npx node f npx NOENT error Jan 24, 2021
@themakshter
Copy link

I am also facing this - any ideas why?

@themakshter
Copy link

I have fixed my issue.

@Tarang, perhaps the directory that you are trying to upload isn't present. Could you provide with details of your action?

@Tarang
Copy link
Author

Tarang commented Feb 2, 2021

Pretty sure the directory is there, if i use s3 deploy directly it works fine

@Reggionick
Copy link
Owner

Hi @Tarang, do you still have this issue? Cloud you paste your action workflow?

@Tarang
Copy link
Author

Tarang commented Feb 16, 2021

Pretty much the example and just changing the folder to dist:

name: Example workflow for S3 Deploy
on: [push]
jobs:
  run:
    runs-on: ubuntu-latest
    env:
      AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
      AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
    steps:
        - uses: actions/checkout@v2

        - name: Deploy
          uses: reggionick/s3-deploy@v3
          with:
            folder: dist
            bucket: ${{ secrets.S3_BUCKET }}
            bucket-region: ${{ secrets.S3_BUCKET_REGION }}
            dist-id: ${{ secrets.CLOUDFRONT_DISTRIBUTION_ID }}
            invalidation: /
            delete-removed: true
            no-cache: true
            private: true

Instead I am doing this to fix it

      - uses: jakejarvis/s3-sync-action@master
        with:
          args: --acl public-read --follow-symlinks --delete
        env:
          AWS_S3_BUCKET: ${{ secrets.S3_BUCKET }}
          AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
          AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
          AWS_REGION: ${{ secrets.S3_BUCKET_REGION }}
          SOURCE_DIR: 'dist'
          
      # Invalidate Cloudfront (this action)
      - name: invalidate
        uses: chetan/invalidate-cloudfront-action@master
        env:
          DISTRIBUTION: ${{ secrets.CLOUDFRONT_DISTRIBUTION_ID }}
          PATHS: '/*'
          AWS_REGION: ${{ secrets.S3_BUCKET_REGION }}
          AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
          AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}

@Reggionick
Copy link
Owner

Pretty much the example and just changing the folder to dist:

Don't you compile anything? Is the folder dist into your repo?

@Tarang
Copy link
Author

Tarang commented Feb 16, 2021

I compile it in the previous step I erased. But keep in mind the code i replace (in the previous post) works fine and it uses the dist folder.

I also did try alot of debugging to see what was going on, i.e i added bash scripts to ls and see if anything was there and I could 100% see the dist folder. Also the npx binary it says NOENT to actually exists so I would guess its some kind of other issue where something has changed and this package hasnt been updated

@yankeeinlondon
Copy link

image

@Reggionick i have a Vuepress site which gets built using node (this works successfully) but then I get this error. I am trying to use your action to deploy to an S3 AccessPoint so I might indeed have some permission issues there but it would appear it's falling over before we get to that point.

@Reggionick
Copy link
Owner

I've encountered this issue in a new project. I found out that the issue was due to a wrong path:
In the action I've set a working directory like:

    defaults:
      run:
        working-directory: frontend

but it seems that the npx command is executed from the repo root path.
I think this because changing the action folder param into ./frontend/build it works.

I haven't check in detail this, but is this scenario like yours?

@yankeeinlondon
Copy link

@Reggionick in your example what does "frontend" represent? Is that where the build assets are being built to? I have been setting the SOURCE_DIR ENV variable to point to the correct pickup point for S3 content and assuming that the path should be relative to the root of the repo.

Having come back to this issue after a week or so I'm not sure if it's moved forward or backward but for me I no longer get the error regarding the execution of npx but instead get the error: fatal error: An error occurred (NoSuchKey) when calling the ListObjectsV2 operation: The specified key does not exist.

image

So to be explicit, I setup an Identity step in my action which follows the build of the static assets and precedes me using your repo to push this to an S3 bucket. From this I have validated that indeed npx is in the path at /opt/hostedtoolcache/node/14.16.1/x64/bin/npx and I guess my current working directory is /home/runner/work/***/*** where I'm assuming the **** are obfuscating what might be deemed "secret info".

The error message refers to ListObjectsV2 which I am a little uncertain of where this originates but URL structure for an S3 AccessPoint is something like this:

image

and thereby different from access patterns that point directly to the S3 bucket itself. Not sure if this could be causing the issue but I am able to access the bucket via the Access Point using Panic's Transmit application so the permissions to interact with the bucket are setup correctly. And now, to my great surprise, I can see that in fact this repo's code DID move the files over to the repo:

image

and the error must have been thrown after the operation had succeeded.

@yankeeinlondon
Copy link

Ok, i'm now even more confused ... I had had set the AWS_REGION in my action by referring to ${{ secrets.AWS_REGION }} but since this isn't really a "secret" I just plain texted it and while I wasn't expecting that to make any difference (as I'd double checked that the secret was indeed set on github) ... it appears to have made it work!

I guess this must mean I had fat fingered the AWS_REGION secret in github ... not sure what else would explain it. Anyway, sorry for the red herring.

@flodev
Copy link

flodev commented Jun 26, 2022

I've encountered this issue in a new project. I found out that the issue was due to a wrong path: In the action I've set a working directory like:

    defaults:
      run:
        working-directory: frontend

but it seems that the npx command is executed from the repo root path. I think this because changing the action folder param into ./frontend/build it works.

I haven't check in detail this, but is this scenario like yours?

Hi, thanks for giving this hint. I can confirm that it works. I have the same setup: Monorepo and a frontend folder that contains the build folder and I had the same issue with EOENT.
Changing s3-deploy to folder: ./frontend/buildworked for me.
Regards Florian

@AJSihota
Copy link

AJSihota commented Jan 4, 2023

I'm experiencing the same issue. I tried to change the folder but even in the correct path where the build asssets are, I get the npx error

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

6 participants