require is not defined #7
Description
Given this snippet:
import bodyParser from 'koa-bodyparser';
import Koa from 'koa';
const chalk = require('chalk');
the result when trying to load this module is:
const chalk = require('chalk');
^
require is not defined
I understand from this issue ModuleLoader/es-module-loader#427 that the loader has made the assumption that the user only wants ES6 module support and not interoperability with require for CommonJS modules.
While that is a perfectly good and reasonable argument for the es-module-loader module, the node-esml
binary would imply by README description and name that there is a measure of interoperability with Node's current and default loader mechanisms. This would follow use of babel in node server-side code in which we're able to use require
within ES6 modules.
The 'sync' nature of require
can be duplicated using async/await
patterns on the dynamic import
, however that can only be used on node > 7 with harmony flags, or node 7.6 - both of which are not yet options for a large chunk of developers due to restrictions in the workplace.
I'd like to at the least point out this limitation and the perception that it may be interpreted as a bug by folks not intimately familiar with loaders and/or es-module-loader. And I'd like to propose the interoperability with default node require
support as a new feature.
Or at the least, an updated README with a solution to provide support for require
. If I'm missing something where require-like capabilities exist, such as the ability to load JSON files as objects, then please do consider adding those to the README, as I haven't found a suitable workaround as simplistic as requiring the file.