无法使用ES6导入语法

时间:2018-07-09 17:19:37

标签: javascript node.js ecmascript-6

我正在尝试使用ES6导入语法,并一直遇到错误。 这是我的数据类型,

class UnionFind{
    constructor(n){
        this.items = n;
    }

    union(p, q){

    }

    connected(p, q){

    }

    find(p){

    }

    count(){

    }

}
export default UnionFind

保存在UnionFind.js文件中

这是主叫客户端,

import { UnionFind } from './unionFind';

const readline = require('readline');

const rl = readline.createInterface({
    input:process.stdin,
    output:process.stdout,
    terminal:false

});

uf = new UnionFind(10)

rl.on('numbers', function (line) {
    arr = number.split(' ')

    console.log(arr);
});

此文件保存在client.mjs文件中

这就是我的运行方式,

node --experimental-modules union-find/client.mjs

出现以下错误,

(node:13465) ExperimentalWarning: The ESM module loader is experimental.
file:///Users/mstewart/Dropbox/data-structures-algorithms-princeton/union-find/client.mjs:1
import { UnionFind } from './unionFind';
         ^^^^^^^^^
SyntaxError: The requested module does not provide an export named 'UnionFind'
    at ModuleJob._instantiate (internal/modules/esm/ModuleJob.js:89:21)
    at <anonymous>

我在这里做什么错了?

1 个答案:

答案 0 :(得分:4)

在这种情况下,请使用

       import UnionFind from './UnionFind.js';

如果您声明

       export class UnionFind{ ....

然后您使用

import { UnionFind } from './UnionFind.js';

还要查看文件名:UnionFind.js。您正在使用“ ./unionFind”。这是区分大小写的