当前位置: 首页 > 知识库问答 >
问题:

Node-从另一个包中的模块导入类[复制]

齐高阳
2023-03-14

我正在写一个应用程序使用Node.js.具体来说,我使用节点v10.3.0。此应用程序位于位于的目录中。/my-mode-控制台/index.js。此应用程序有一个package.json文件位于./my-mode-控制台/package.json。这个应用程序引用了一个在./my-模块/项目/中定义的类。需要注意的是my-模块表示自己的包。这个包是在./my-模块/package.json中定义的。index.js代码如下:

'use strict';

import { Item } from '../my-module/items/item.js';

async function entry() {
  let item = await Item.FindById(1);
  console.log(item);
}

entry();

当我尝试运行此操作时,会出现以下错误:

import { Item } from '../my-module/items/item.js';
       ^
SyntaxError: Unexpected token {

我的进口声明有什么问题?在我看来这是正确的。我是不是误解了什么?

项目js

class Item {
    constructor() {}

    async static FindById(id) {
      console.log('finding item by id: ' + id);
    }
};

module.exports = Item;

谢谢

共有3个答案

康锦
2023-03-14

第一:

class Item {
    constructor() {}

    async static FindById(id) {
      console.log('finding item by id: ' + id);
    }
};

module.exports.Item = Item; // change this line

秒:

'use strict';

// import { Item } from '../my-module/items/item.js'; // not sure if it work, it work in react, but in regular node.js can be wrong (look doc ES6)
const Item = require('../my-module/items/item.js');
var someitem = new Item();
async function entry() {
  let item = await someitem.FindById(1);
  console.log(item);
}
entry();
吴驰
2023-03-14

从“…”导入{Item}/我的模块/项目/项目。js′是用于从Javascript模块导入导出的ES6语法。如果没有其他标志,节点当前不支持此操作,因此您必须改用require

常量项目=需要('.../my-模块/项目/项目');

这样,您将需要在Item中导出类Item。js

还要注意,您必须创建要导出的类的实例,以便在index.js中使用其函数。

吴浩博
2023-03-14

正如@jsur所提到的,ES模块仍然是实验性的。但是如果你想使用它们,你必须添加实验模块。如果仍然要使用ES模块,则必须重命名。js to。mjs和该项目。js,现在是commonJS样式,必须更改为ES模块小的其他修复。而且你也不必使用“use strict”,默认情况下它是严格的。所以最后应该是这样的:

指数mjs

import { Item } from '../my-module/items/item';

async function entry() {
  let item = await Item.FindById(1);
  console.log(item);
}

entry();

项目mjs

export class Item {
    constructor() {}

    static async FindById(id) {
      console.log('finding item by id: ' + id);
    }
}

现在只需执行节点——实验模块索引。mjs你很好。

 类似资料:
  • null 我是否需要创建模块y的库,然后将创建的库导入模块X? 或者解决办法是别的。

  • 我撰写并发表了以下内容:https://github.com/justin-calleja/pkg-dependents 现在我写这个包在TypeScript:https://github.com/justin-calleja/update-dependents 我想在update dependents中重复使用pkg dependents(IndexInfoDict)中定义的类型,我想检查是否有

  • 如图,我将framework中的ResponseResult引入到blog中,然后在maven install命令下报错。 blog依赖了framework。是不是因为我两个模块的java下的包名一样导致的,如果是的话,该怎么改呢?

  • 文件夹结构: 我需要在中导入:

  • 问题内容: 在将其标记为重复之前, 请阅读我的问题: 我正在尝试从子目录的文件中导入类 并且在我的课程中有()我尝试了什么: 放入main.py: 我收到错误消息: 从文件导入Klasa ImportError:没有名为“文件”的模块 当我尝试使用时: 我收到此错误: tmp = Klasa() NameError:未定义名称“ Klasa” 我在子文件夹中放了一个空格,它仍然不起作用,而我在 :

  • 问题内容: 我在编写Python程序很有趣,但在尝试从另一个文件中的类导入函数时遇到问题。这是我的代码: 我想返回一个从另一个文件中的类调用的函数。当我导入文件时,它首先运行其中的类,然后继续运行原始代码。为什么会这样? 这是comm_system的代码: 问题答案: 将通讯系统的结尾更改为: 总是在运行的那些行会导致它在导入和执行时都运行。