无法在节点中导入模块

Unable to import the module in node

我正在尝试在 app.js 中导入 logger.js,但一次又一次地遇到错误。 语法错误:无法在模块外使用导入语句。

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';

我正在使用节点 12.0。

如果您想从 logger.js 导入,请更改: app.js

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

更详细的说明,可以查看this

如果您使用像 import logger from './logger'; 这样的 ESM(ECMAScript 模块)语法,您必须指定 ESM 导出。

注意:如果您使用的是 v12,则必须使用 Node.js v12.17.0 或更高版本 (changelog reference) 或使用 --experimental-modules标志。

此外,您必须在 package.json 中指定 "type": "module",如 @Evert 所述

所以:

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

在您的 package.json

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

引用Node.js ECMAScript Modules