0

I am trying to import the logger.js in app.js but facing an error again and again. Syntax Error: Cannot use import statement outside the module.

logger.js

    var url='http://mylogger.io/log';
function log(message){

    //send an http request;
    console.log(message);
}
module.export.log=log;

app.js

import logger from './logger';

I am using node 12.0.

shelly yew
  • 11
  • 4
  • Does this answer your question? [SyntaxError: Cannot use import statement outside a module](https://stackoverflow.com/questions/58384179/syntaxerror-cannot-use-import-statement-outside-a-module) – Evert Jul 11 '20 at 03:06

2 Answers2

0

if you want to import from logger.js change: app.js

var newlog = require('./logger.js');

For a more detailed clarification, you can check this

danH
  • 105
  • 10
0

If you are using ESM (ECMAScript Module) syntax like import logger from './logger'; you must specify ESM exports.

NOTE: if you are using v12, you must be using Node.js v12.17.0 or above (changelog reference) or using the --experimental-modules flag.

In addition you must specify "type": "module" in your package.json as @Evert mentioned

So:

logger.js

var url='http://mylogger.io/log';

// or export function log(message) {
function log(message){

    //send an http request;
    console.log(message);
}

export default log;

app.js

import logger from './logger';

package.json

Specify "type": "module" in your package.json

{
  "name": "<project>",
  "version": "<version>",
  "description": "<description>",
  "type": "module",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  ......
}

Reference Node.js ECMAScript Modules

iSkore
  • 7,394
  • 3
  • 34
  • 59