Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/jaydson/require-from-esm
Require CJS modules from ES modules
https://github.com/jaydson/require-from-esm
Last synced: about 1 month ago
JSON representation
Require CJS modules from ES modules
- Host: GitHub
- URL: https://github.com/jaydson/require-from-esm
- Owner: jaydson
- Created: 2019-05-14T04:09:29.000Z (over 5 years ago)
- Default Branch: master
- Last Pushed: 2023-01-29T01:20:34.000Z (almost 2 years ago)
- Last Synced: 2024-11-21T10:45:02.902Z (2 months ago)
- Language: JavaScript
- Size: 2.93 KB
- Stars: 1
- Watchers: 3
- Forks: 1
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# require-from-esm
⚠️ Warning note ⚠ ️
1) This is very experimental
2) Node.js' latest version (12.0.0) is required
3) You should run Node.js with the `--experimental-modules` flag
4) You probably should run Node.js with the `--es-module-specifier-resolution=node` flag`require-from-esm` is a small package with literally few lines aiming to provide interoperability between CJS modules and ES modules.
To be more specific, `require-from-esm` let you require CJS modules with the old friend Node.js global `require()` from ES modules.
With ES modules on Node.js we can use almost every feature from ECMA modules (still experimental).Example:
```
import require from 'require-from-esm';
import path from 'path';
const mymodule = require('../../mymodule.cjs'); // You should use `../../` for local modules *console.log(path.normalize('/foo/bar//baz/asdf/quux/..'));
console.log(mymodule);
```For local modules you should use `require(../../MYMODULE)` instead of `require(./MYMODULE)`.
We don't have `__dirname` and `__pathname` globals when using ES modules.
No solution was found to fix it until now.
PRs are welcome.## How to use
1) Be sure you're using Node.js >12.0.0
2) The flags, you should use the flags: `--experimental-modules` and `--es-module-specifier-resolution=node`
3) You can use npm scripts to run your app, something like this:
```
"scripts": {
"start": "node --experimental-modules --es-module-specifier-resolution=node index.js"
},
```
4) Make sure you have the `"type": "module"` on your package.jsonFurther reading:
https://medium.com/@nodejs/announcing-a-new-experimental-modules-1be8d2d6c2ff
http://2ality.com/2019/04/nodejs-esm-impl.html
https://scotch.io/tutorials/new-ecmascript-modules-in-node-v12#toc-new-features-in-node-v12