Skip to content

node >= 17: expiremental loader errs if http is imported into .mjs file #41320

Description

@noahehall

Version

17.3.0

Platform

Linux spaceship 5.13.0-22-generic #22-Ubuntu SMP Fri Nov 5 13:21:36 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux

Subsystem

esm loader, http

esm loader docs

What steps will reproduce the bug?

  • use an esm experimental loader to load somefile.mjs
  • inside of somefile.mjs add
importhttpfrom'http';

How often does it reproduce? Is there a required condition?

always reproduces

What is the expected behavior?

the expiremental loader works, even when the docs tell us not to use it

What do you see instead?

 custom logic {
format: 'module',
isCjs: false,
isFlow: false,
urlOG: 'file:///home/poop/git/foss/nodeproto/packages/libraries/testproto/src/t.mjs'
}
returning default file:///home/poop/git/foss/nodeproto/packages/libraries/testproto/src/t.mjs
TypeError [ERR_INVALID_URL_SCHEME]: The URL must be one of scheme file or data
at new NodeError (node:internal/errors:371:5)
at defaultGetSource (node:internal/modules/esm/get_source:38:11)
at defaultLoad (node:internal/modules/esm/load:33:20)
at load (file:///home/poop/git/foss/nodeproto/packages/libraries/testproto/node_modules/@nodeproto/configproto/src/node/loaders/flow.mjs:47:25)
at async ESMLoader.load (node:internal/modules/esm/loader:359:20)
at async ESMLoader.moduleProvider (node:internal/modules/esm/loader:280:47)
ELIFECYCLE Command failed with exit code 1.
poop@spaceship:~/git/foss/nodeproto/packages/libraries/testproto

Additional information

more details

{
'@nodeproto/testproto': '0.0.0',
npm: '8.3.0',
node: '17.3.0',
v8: '9.6.180.15-node.12',
uv: '1.42.0',
zlib: '1.2.11',
brotli: '1.0.9',
ares: '1.18.1',
modules: '102',
nghttp2: '1.45.1',
napi: '8',
llhttp: '6.0.4',
openssl: '3.0.1+quic',
cldr: '40.0',
icu: '70.1',
tz: '2021a3',
unicode: '14.0',
ngtcp2: '0.1.0-DEV',
nghttp3: '0.1.0-DEV'
}
;"env" config from environment
_noahehall-registry = (protected) argv = "{\"remain\":[\"run\",\"repo:about\"],\"cooked\":[\"run\",\"repo:about\"],\"original\":[\"run\",\"repo:about\"]}" cache-dir = "/var/.nodeproto/pnpm" child-concurrency = "2" color = true enable-modules-dir = true fetch-retry-maxtimeout = 60000 fetch-retry-mintimeout = 10000 fetch-timeout = 60000 global-bin-dir = "/var/.nodeproto/pnpm-global/bin" global-dir = "/var/.nodeproto/pnpm-global" hoist = true hoist-pattern = "['*']" link-workspace-packages = true lockfile = true loglevel = "info" modules-cache-max-age = "2880" modules-dir = "node_modules" node-gyp = "/home/poop/.node/corepack/pnpm/6.15.1/dist/node_modules/node-gyp/bin/node-gyp.js" package-import-method = "copy" prefer-frozen-lockfile = true prefer-offline = true prefer-workspace-packages = true recursive-install = true registry = "https://registry.npmjs.org/" save-exact = true save-prefix = "" shared-workspace-lockfile = true state-dir = "/var/.nodeproto/pnpm" store-dir = "/var/.nodeproto/.pnpm-store" symlink = true tag = "latest" use-beta-cli = true user-agent = "pnpm/6.15.1 npm/? node/v17.3.0 linux x64" virtual-store-dir = "node_modules/.pnpm"; node bin location = /opt/nodejs/node-v17.3.0-linux-x64/bin/node
; cwd = /home/poop/git/foss/nodeproto/packages/libraries/testproto
; HOME = /home/poop
; Run `npm config ls -l` to show all defaults.
npm timing command:c Completed in 9ms
npm timing npm Completed in 113ms
npm info ok NODE OPTIONS set to: --experimental-loader="./node_modules/@nodeproto/configproto/src/node/loaders/flow.mjs" --experimental-specifier-resolution=node --experimental-json-modules --experimental-top-level-await --experimental-vm-modules --experimental-import-meta-resolve node --enable-source-maps --heapsnapshot-near-heap-limit=3 --use-largepages=on --pending-deprecation --trace-sigint --trace-warnings --trace-exit --report-uncaught-exception --report-on-fatalerror --abort-on-uncaught-exception

Metadata

Metadata

Assignees

No one assigned

    Labels

    loadersIssues and PRs related to ES module loadersstale

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions