Skip to content

Support for import('./native.node') #55821

Closed
@guybedford

Description

@guybedford

What is the problem this feature will solve?

Currently require needs to be used in ES modules in order to be able to load native addons:

import { feature } from './native.node';

Previous issue: #40541.

There is some discussion to be had around whether import assertions should be used for the type. Personally I would even prefer if the import assertion wasn't necessarily mandated like we do for Wasm imports.

What is the feature you are proposing to solve the problem?

Transparently add support for import('./native.node') to work in the Node.js ESM implementation, based on the .node file extension.

This is one of the few last features that require() supports but import() does not, and would help gain full parity between the module systems.

What alternatives have you considered?

The alternative is to rely on process or have a more ergonomic process.getNativeModule('./mode.node'), but I think users would prefer the ergonomics of a direct import.

Some thought may need to be put to default versus named exports support in this interface as well.

Metadata

Metadata

Assignees

No one assigned

    Labels

    addonsIssues and PRs related to native addons.esmIssues and PRs related to the ECMAScript Modules implementation.feature requestIssues that request new features to be added to Node.js.

    Type

    No type

    Projects

    • Status

      Awaiting Triage

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions