Giter Club home page Giter Club logo

Comments (6)

yoursunny avatar yoursunny commented on May 27, 2024

corepack is part of nodejs package distributed by NodeSource.
I'm affected by the same issue after upgrade to nodejs=20.12.0-1nodesource1 package.
To downgrade:

sudo apt install nodejs=20.11.1-1nodesource1

from corepack.

marinedayo avatar marinedayo commented on May 27, 2024

Yes, I am also using nodejs distributed by NodeSource.
I appended the version information to my report.

from corepack.

marinedayo avatar marinedayo commented on May 27, 2024

Probably import ProxyAgent from undici/index.js instead of undici/lib/proxy-agent.js, e.g. as below:

diff --git a/sources/httpUtils.ts b/sources/httpUtils.ts
index e995d1e..b856099 100644
--- a/sources/httpUtils.ts
+++ b/sources/httpUtils.ts
@@ -100,11 +100,7 @@ async function getProxyAgent(input: string | URL) {
 
   if (!proxy) return undefined;
 
-  // Doing a deep import here since undici isn't tree-shakeable
-  const {default: ProxyAgent} = (await import(
-    // @ts-expect-error No types for this specific file
-    `undici/lib/proxy-agent.js`
-  )) as { default: typeof import('undici').ProxyAgent };
+  const {ProxyAgent} = await import(`undici`);
 
   return new ProxyAgent(proxy);
 }

from corepack.

aduh95 avatar aduh95 commented on May 27, 2024

Probably import ProxyAgent from undici/index.js instead of undici/lib/proxy-agent.js

AFAICT it should not have any effect – except making the bundle size bigger. But it's certainly something we can try, we'd just need a way to reproduce the issue first so we can validate if that has any effect.

from corepack.

marinedayo avatar marinedayo commented on May 27, 2024

@aduh95 I'm trying to reproduce. Is it the way to reproduce that you expected?

  1. Clone corepack repository.
  2. yarn install
  3. yarn add proxy --dev
  4. yarn build
  5. Write a code named tests/issue444.test.ts, described below.
  6. yarn test -- issue444
import {afterAll, beforeAll, describe, expect, it} from '@jest/globals';
import process from 'node:process';

import { createProxy } from 'proxy'; // Need `yarn add proxy --dev`.
import type { ProxyServer } from 'proxy';

import { fetchAsJson } from '../sources/httpUtils';

describe(`reproduce issue #444`, () => {

  let proxy: ProxyServer;

  beforeAll((done) => {
    proxy = createProxy();
    proxy.listen(done);
  })

  afterAll((done) => {
    proxy.close(done);
  })

  it(`without proxy settings`, async () => {
    await expect(fetchAsJson(`https://registry.npmjs.org/yarn`)).resolves.toEqual(expect.anything());
  });

  it(`with proxy settings`, async () => {
    process.env.HTTPS_PROXY = `http://localhost:${proxy.address().port}`;

    await expect(fetchAsJson(`https://registry.npmjs.org/yarn`)).resolves.toEqual(expect.anything());
    // TODO: Test fails.
    // Received promise rejected instead of resolved
    // Rejected to value: [Error: Error when performing the request to https://registry.npmjs.org/yarn; for troubleshooting help, see https://github.com/nodejs/corepack#troubleshooting]
  });

});

from corepack.

marinedayo avatar marinedayo commented on May 27, 2024

Looks like the same reason as here currently in discussion. So my issue is closed.

Duplicate of #417

from corepack.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.