如何通过es6 import导入nodejs模块“ module”以使用“ createRequire”创建“ require”功能,以使用节点的“ require”?

时间:2019-12-05 09:29:07

标签: javascript node.js ecmascript-6

我正在编写一个JavaScript es6模块,其中包含“ Mocha”测试用例,用于测试包含我的应用程序实际功能的JavaScript es6模块。

我正在尝试通过es6 import导入nodejs模块“模块”,如下所示:

import { createRequire } from 'module';

接下来,我通过调用“ createRequire”创建一个“ require”函数:

const require = createRequire(import.meta.url);

然后,我尝试使用“ require”导入nodejs模块:

const chai = require('chai');
const assert = chai.assert;

我将所有内容放到一个HTML文件中,启动了Web服务器,然后在浏览器中打开了HTML文件。

不幸的是,第一行在浏览器Firefox的控制台中给我一个错误:

TypeError: Error resolving module specifier: module

浏览器Chromium给我以下错误消息:

Uncaught TypeError: Failed to resolve module specifier "module". Relative references must start with either "/", "./", or "../".

实际上,给出相对引用也不起作用:

我安装了nodejs模块“模块”(npm install module),并使用了该模块的相对路径。不幸的是,浏览器不知道如何加载模块,因为没有给出具体的入口点。

我只是尝试遵守手册,但没有运气:

https://nodejs.org/api/modules.html#modules_module_createrequire_filename

您怎么看?我应该如何更改代码才能使其正常工作?

在此先感谢您的宝贵建议。

1 个答案:

答案 0 :(得分:0)

我希望您已使用'npm install module'命令安装了该模块,尝试使用commonJS模式并以以下方式包含该模块

const { createRequire } = require('module');