【问题标题】:Create own class创建自己的类
【发布时间】:2021-07-28 05:03:04
【问题描述】:

在 expressjs 中创建了一个新项目。我想创建自己的班级。所以我在/routes/中创建了一个文件MyClass.js

class MyClass {
    constructor() {
    }
}

export default MyClass;

我在/routes/index.js 中添加了: import MyClass from './MyClass';

我有一个错误:

import MyClass from './MyClass;
^^^^^^

SyntaxError: Cannot use import statement outside a module
[...]

我做错了什么?

【问题讨论】:

标签: node.js express


【解决方案1】:

您的项目设置不正确,无法将有错误的文件解释为 ESM 模块文件。相反,它被解释为一个 CommonJS 模块(你使用 require(),而不是 import),这是 nodejs 默认的。

有很多方法可以告诉 nodejs 你的文件应该是一个 ESM 模块。

  1. 你可以给它一个文件扩展名.mjs
  2. 您可以将"type": "module" 添加到您的 package.json 文件中。
  3. 如果此文件是您正在执行的顶级文件,您可以在启动 node.js 时使用--input-type=module 命令行参数。

有关此主题,请参阅 nodejs 文档here


仅供参考,你可以切换到使用 require()module.exports 而不是 importexport 的 CommonJS 语法,但我假设你真正想要做的是告诉 nodejs 你想使用ESM 模块,因此您可以使用更现代的 importexport 语法。

【讨论】:

    【解决方案2】:

    首先要导出你想使用exportsmodule.export 的类 并且要导入它,您应该使用require('') 而不是import

    这些功能仅适用于 .mjs,或者如果您将设置 babel,尽管一些 es6 功能尚未登陆

    【讨论】:

    • OP 显然打算使用 ESM importexport 语法。因此,虽然他们可以将所有代码转换为 CommonJS(使用 require()module.exports),但似乎更希望的答案是如何将他们的文件解释为 ESM 模块,以便他们可以使用更现代的语法 @ 987654329@ 和 export.
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-14
    • 2012-02-24
    相关资源
    最近更新 更多