【发布时间】:2020-04-22 23:35:51
【问题描述】:
我正在使用 kahoot-api NPM 模块(GitHub、NPM),它需要使用 JavaScript 导入。 (编辑,这是一个 Node.js 包。我在写这篇文章的时候还不知道 JS 和 Node.js 之间的区别,这就是创建这个问题的原因)。
文档说要使用以下 JavaScript 导入脚本来导入 Session 和 Adapters:
import { Session, Adapters } from 'kahoot-api';
这会引发一个错误,提示我需要使用相对引用。
无法解析模块说明符“kahoot-api”。相对引用必须以“/”、“./”或“../”开头。
我的文件和文件夹的结构如下:
- index.php
- node_modules
- @omegaboot
- kahoot-api
kahoot-api 的所有 NPM 文件都在 kahoot-api 文件夹中。
我已修改我的 JavaScript 代码以使用相对引用,如下所示。
import { Session, Adapters } from './node_modules/@omegaboot/kahoot-api/';
没有抛出错误,但是两个导入的语句Session 和Adapters 不可用,并且仍然未定义。
import { Session, Adapters } from './node_modules/@omegaboot/kahoot-api/';
const session = new Session('000000');
session.openSocket() //Connect
.then(socket => {
const player = new Adapters.Player(socket); //Create player class
player.join('test') //Join with name
.then(() => {
console.log('Success!');
});
});
kahoot-api 文件夹中有多个 JavaScript 文件,我尝试在 JavaScript 导入中包含每个 JavaScript 文件,但无济于事。
另外,我根据需要使用index.php 中的代码和<script> 标记和属性type="module",否则会引发以下错误:
不能在模块外使用 import 语句
【问题讨论】:
-
你在使用 webpack 吗?因为
import语句在nodejs中不直接支持。 -
@ajitkumar 我不知道 webpack 是什么。我刚刚用 npm install 安装了 npm 包。
-
如果你没有使用任何 js 打包器,那么你应该使用
require('module-name')而不是import语句。 -
我认为正确的导入语句应该是这样的:
import { Session, Adapters } from '@omegaboot/kahoot-api'; -
@PatrickHund 这只会导致
Failed to resolve module specifier "@omegaboot/kahoot-api". Relative references must start with either "/", "./", or "../".。
标签: javascript node.js npm