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

Can’t import stream promises API with ECMAScript Modules #35731

Closed
alexewerlof opened this issue Oct 21, 2020 · 4 comments
Closed

Can’t import stream promises API with ECMAScript Modules #35731

alexewerlof opened this issue Oct 21, 2020 · 4 comments
Labels
esm Issues and PRs related to the ECMAScript Modules implementation. stream Issues and PRs related to the stream subsystem.

Comments

@alexewerlof
Copy link

alexewerlof commented Oct 21, 2020

  • Version:

v12.17.0 (current LTS)
v14.14.0 (LTS in a few days)

  • Platform:

Linux 5.4.0-51-generic

  • Subsystem:

'stream'

What steps will reproduce the bug?

The documentation says:

The stream/promises API provides an alternative set of asynchronous utility functions for streams that return Promise objects rather than using callbacks. The API is accessible via require('stream/promises') or require('stream').promises.

Which is fine. However, when using the ESM syntax it does not work like other APIs like 'fs' or 'dns':

import { promises as fsPromises } from 'fs' // no error thrown
import { promises as dnsPromises } from 'dns' // no error thrown
import { promises as streamPromises } from 'stream'
//       ^^^^^^^^
// SyntaxError: The requested module 'stream' does not provide an export named 'promises'
//     at ModuleJob._instantiate (internal/modules/esm/module_job.js:98:21)
//     at async ModuleJob.run (internal/modules/esm/module_job.js:143:5)
//     at async Loader.import (internal/modules/esm/loader.js:165:24)
//     at async Object.loadESM (internal/process/esm_loader.js:68:5)

What is the expected behavior?

It should work just like 'fs' or 'dns' promises.

This issue is similar to #21014 or the fix in #32953

What do you see instead?

Throws a SyntaxError.

Additional information

I have made a repo to demonstrate the issue. There are various syntaxes, but 2.js shows the issue pretty well.

@PoojaDurgad PoojaDurgad added esm Issues and PRs related to the ECMAScript Modules implementation. stream Issues and PRs related to the stream subsystem. labels Oct 21, 2020
@ExE-Boss
Copy link
Contributor

ExE-Boss commented Oct 24, 2020

This is because the Stream Promises API is only available from v15.0.0: #33991

@markddrake
Copy link

The documentation and version history for streams should make this clear

@ExE-Boss
Copy link
Contributor

#34002 updated the documentation, now it’s just a matter of waiting for the website to be updated.

@ctavan
Copy link
Contributor

ctavan commented Dec 10, 2020

This is mentioned on the website now: https://nodejs.org/dist/latest-v15.x/docs/api/stream.html#stream_streams_promises_api

image

I believe the issue can be closed.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
esm Issues and PRs related to the ECMAScript Modules implementation. stream Issues and PRs related to the stream subsystem.
Projects
None yet
Development

No branches or pull requests

6 participants