首页 > 解决方案 > 无法使用 ES6 导入语法

问题描述

我正在尝试使用 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>

我在这里做错了什么?

标签: javascriptnode.jsecmascript-6

解决方案


在这种情况下,使用

       import UnionFind from './UnionFind.js';

如果你声明

       export class UnionFind{ ....

然后你用

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

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


推荐阅读