【问题标题】:How to use a class from one JS file in another JS file? [duplicate]如何在另一个 JS 文件中使用一个 JS 文件中的类? [复制]
【发布时间】:2020-02-12 04:33:24
【问题描述】:

我正在尝试在 B.js 文件中使用 A.js 文件中的类, 我创建了一个 A.js 类的实例,并尝试在 B.js 中调用它的函数,但出现错误 说

未捕获的语法错误:无法在模块外使用 import 语句

这就是代码的样子:

A.js 文件

export class A {
    constructor() {
        this.name = 'A'
    }
    getName() {
        return this.name;
    }
}

B.js 文件

import A from './A.js';
const a = new A();
console.log(a.getName());

我做错了什么?

【问题讨论】:

  • 看起来您没有将代码作为模块进行评估。你是如何执行代码的?
  • 在谷歌浏览器中

标签: javascript


【解决方案1】:

在您的文件 B.js 中,将导入从 import A from './A.js'; 更改为 import { A } from './A.js';

导出类或函数有两种方式:

1) 默认

2) 命名

1) 允许每个文件进行一次导出。导入的命名独立于原始导出的名称。

示例:

export default class A { } // A.js
import AComponent from './A'; 

2) 允许每个文件多次导出。导入的名称必须与导出的名称相同。

示例:

export class A { } // A.js
import { A } from './A'; 

【讨论】:

  • 虽然这是正确的,但 OP 当前的问题是他们没有将代码作为模块加载。
【解决方案2】:

如果您使用不带{} 的导入,则需要使用keyword default。尝试如下代码 -

export default class A {
    constructor() {
        this.name = 'A'
    }
    getName() {
        return this.name;
    }
}

或者你可以像这样使用别名 -

import * as A from './A.js';

【讨论】:

  • 虽然这是正确的,但 OP 当前的问题是他们没有将代码作为模块加载。 “或者你可以使用这样的别名” 然后他们将不得不使用A.A 访问该类...
猜你喜欢
  • 2011-06-05
  • 2016-07-03
  • 1970-01-01
  • 2021-08-20
  • 2018-09-26
  • 2017-05-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多