无法将模块导入节点

时间:2020-07-11 02:58:50

标签: node.js node-modules

我试图将logger.js导入app.js中,但是一次又一次遇到错误。 语法错误:无法在模块外部使用import语句。

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。

2 个答案:

答案 0 :(得分:0)

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

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

要获得更详细的说明,可以检查this

答案 1 :(得分:0)

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

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

此外,您必须在"type": "module"中将package.json指定为提到的@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

在您的"type": "module"中指定package.json

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

参考Node.js ECMAScript Modules