首页 > 解决方案 > 如何通过 es6 import 导入 nodejs 模块“module”以使用“createRequire”创建“require”函数以使用节点的“require”?

问题描述

我正在编写一个 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 文件中,启动一个网络服务器并在浏览器中打开该 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

你怎么看?我应该如何更改我的代码以使其正常工作?

非常感谢您的宝贵建议。

标签: javascriptnode.jsecmascript-6

解决方案


require() 用于在 node 中加载文件,module 是 node 模块。

这些东西在浏览器中是不存在的。

你做这些事情,并在 node.js 中运行 mocha 测试。应该没有浏览器,只有一个命令行。


推荐阅读