Skip to content
This repository was archived by the owner on Jul 13, 2020. It is now read-only.
This repository was archived by the owner on Jul 13, 2020. It is now read-only.

require not working in es6 modules in NodeJS #427

@rj33

Description

@rj33

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.js

I 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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions