-
Notifications
You must be signed in to change notification settings - Fork 185
require not working in es6 modules in NodeJS #427
Description
I'm not sure if this is a module loader issue, or a transpiling issue, but since upgrading to the latest version (from 0.15.0) I have not been able to get require to work from my dynamically transpiled modules when running in NodeJS. I've also upgraded Babel (5.0.0 to 5.8.21) at the same tiime, so apologies if I'm raising this in the wrong place.
Previously I was able to get code like this to work:
var bunyan = require('bunyan');
var log = bunyan.createLogger({name: 'ct'
,stream:process.stdout
,level:"info"
,serializers: {
websocketMsg:function websocketMsgSerializer(msg) {
return {
eventName:msg.eventName
};
}
}
});
export { log };This is a module loaded with an es6 import such as:
import { log } from "server-modules/logger/logger.js";
I needed to make a few changes such as installing bable-core and appending .js to my module paths, but the setup should be otherwise the same as my old working code. I setup the es6 module loader like this:
var argv = require('minimist')(process.argv.slice(2));
var System = require('es6-module-loader').System;
System.transpiler = 'babel';
System.babelOptions = { blacklist: ['regenerator']
,ignore: /node_modules/
,sourceMap: true
};
System.import('./koa-server.js').then(function(index) {
index.run(__dirname,argv);
}).catch(function(err){
console.log('top level err', err, err.stack);
});`When running the app I get errors like this:
top level err [Error: require is not defined] ReferenceError: require is not defined
at execute (file:///Users/richard/mysrc/ct/site/server-modules/logger/logger.js!transpiled:9:22)
at doExecute (/Users/richard/mysrc/ct/site/node_modules/es6-module-loader/dist/es6-module-loader-dev.src.js:1190:22)
at ensureEvaluated (/Users/richard/mysrc/ct/site/node_modules/es6-module-loader/dist/es6-module-loader-dev.src.js:1251:11)
at ensureEvaluated (/Users/richard/mysrc/ct/site/node_modules/es6-module-loader/dist/es6-module-loader-dev.src.js:1235:15)
at ensureEvaluated (/Users/richard/mysrc/ct/site/node_modules/es6-module-loader/dist/es6-module-loader-dev.src.js:1235:15)
at ensureEvaluated (/Users/richard/mysrc/ct/site/node_modules/es6-module-loader/dist/es6-module-loader-dev.src.js:1235:15)
at ensureEvaluated (/Users/richard/mysrc/ct/site/node_modules/es6-module-loader/dist/es6-module-loader-dev.src.js:1235:15)
at ensureEvaluated (/Users/richard/mysrc/ct/site/node_modules/es6-module-loader/dist/es6-module-loader-dev.src.js:1235:15)
at doEnsureEvaluated (/Users/richard/mysrc/ct/site/node_modules/es6-module-loader/dist/es6-module-loader-dev.src.js:1214:15)
at evaluateLoadedModule (/Users/richard/mysrc/ct/site/node_modules/es6-module-loader/dist/es6-module-loader-dev.src.js:1207:5)
Error evaluating file:///Users/richard/mysrc/ct/site/server-modules/logger/logger.js
Error evaluating file:///Users/richard/mysrc/ct/site/server-modules/websockets/websocket-client.js
Error evaluating file:///Users/richard/mysrc/ct/site/server-modules/websockets/websockets-handler.js
Error evaluating file:///Users/richard/mysrc/ct/site/server-modules/server-controller/server-controller.js
Error evaluating file:///Users/richard/mysrc/ct/site/server-modules/training-targets/training-targets-server.jsI can see why require would not be defined in a browser environment, but I'm unclear why it is not available in a NodeJS environment. Removing the require from logger.js moves the error along to another file using require. All of this worked ok in 0.15.0.
Any idea what I'm doing wrong here?
Regards,
Richard.