javascript - 如何通过 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
你怎么看?我应该如何更改我的代码以使其正常工作?
非常感谢您的宝贵建议。
解决方案
require() 用于在 node 中加载文件,module 是 node 模块。
这些东西在浏览器中是不存在的。
你做这些事情,并在 node.js 中运行 mocha 测试。应该没有浏览器,只有一个命令行。
推荐阅读
- c# - 迁移 - FOREIGN KEY 约束
- c# - MSUnitTests 上的代理错误,3.1
- android - 我正在尝试在 Android Studio 上发出 POST 请求。但是应用程序停止
- php - 发送到 str_replace PHP 时修改数组键
- ruby-on-rails - Webpacker 在公共/资产中缓慢和重复文件
- java - 为什么在使用正确的数字时我的组件不能正确居中?
- postgresql - 如何检查字符串是否是有效的 postgres 名称?
- javascript - 如何使电子菜单在当前窗口中进行一般搜索?
- c# - 使用类中的变量在其他地方使用
- javascript - 是否可以通过 URL 直接转到 div 的内容?