0

0

如何在 ES 模块环境中正确导入并使用 random 库

心靈之曲

心靈之曲

发布时间:2026-01-03 14:48:08

|

743人浏览过

|

来源于php中文网

原创

如何在 ES 模块环境中正确导入并使用 random 库

本文介绍如何解决 node.js 中因混合使用 commonjs(`require`)与 es 模块(`.mjs` 或 `"type": "module"`)导致的 `err_require_esm` 错误,并正确调用 `random` 库的整数生成方法。

当你在 Node.js 项目中使用 const random = require('random'); 却遇到 ERR_REQUIRE_ESM 报错,根本原因在于:random 包(即 random)自 v3.0.0 起已完全发布为纯 ES 模块(ESM),不再支持 require() 同步加载。即使你的主文件是 CommonJS(.js + package.json 无 "type": "module"),只要所依赖的模块是 ESM,Node.js 就会强制要求使用动态 import() —— 且该 import() 返回的是一个 Promise,无法直接得到同步函数如 random(0, 20)。

但请注意:仅改用 import() 并不能恢复 random(0, 20) 这种旧式调用方式。random 包的 ESM 版本导出的是命名函数对象(如 int, float, bool 等),不再默认导出一个可直接调用的函数。因此,正确的迁移路径分两步:

✅ 第一步:改为动态 import()(适用于 CommonJS 环境)

// ❌ 错误(CommonJS 中 require ESM 模块)
// const random = require('random');

// ✅ 正确:在 CommonJS 文件中使用顶层 await(需 Node.js ≥ 14.8 且启用 --experimental-top-level-await)
const { int } = await import('random');

// 然后使用:
const x = int(0, 20); // ✅ 生成 [0, 20) 区间内的整数(左闭右开)
? 提示:若你使用的是较老 Node.js 版本( console.log(x));

✅ 第二步:使用正确的 API(关键!)

原写法 random(0, 20) 是 random@2.x 的默认导出行为,而 random@3.x+ 已移除该导出。你必须显式调用其子函数:

存了个图
存了个图

视频图片解析/字幕/剪辑,视频高清保存/图片源图提取

下载
  • int(min, max) → 生成 [min, max) 整数(推荐,最常用)
  • float(min, max) → 生成 [min, max) 浮点数
  • bool() → 随机布尔值
// ✅ 正确用法示例
const { int, float, bool } = await import('random');

console.log(int(0, 20));     // e.g., 7
console.log(float(1.5, 3.7)); // e.g., 2.934
console.log(bool());        // true or false

⚠️ 注意事项

  • 不要尝试 const random = (await import('random')).default —— random 包没有 default 导出,此举会报 undefined is not a function。
  • 若你项目已设 "type": "module",则应统一使用静态 import(非动态):
    // index.mjs 或 package.json 中 "type": "module"
    import { int } from 'random';
    const x = int(0, 20);
  • 确保安装的是最新版:npm install random@latest(当前稳定版为 ^3.0.0)。

✅ 总结

修复本质是 API 升级 + 加载方式适配

  1. 用 await import('random') 替代 require('random');
  2. 解构使用 { int } 等具名导出,而非调用 random(0,20);
  3. 根据需求选择 int() / float() / bool() 等明确语义的方法。

这样既符合 Node.js 模块规范,又确保代码简洁、类型清晰、可维护性强。

相关专题

更多
json数据格式
json数据格式

JSON是一种轻量级的数据交换格式。本专题为大家带来json数据格式相关文章,帮助大家解决问题。

403

2023.08.07

json是什么
json是什么

JSON是一种轻量级的数据交换格式,具有简洁、易读、跨平台和语言的特点,JSON数据是通过键值对的方式进行组织,其中键是字符串,值可以是字符串、数值、布尔值、数组、对象或者null,在Web开发、数据交换和配置文件等方面得到广泛应用。本专题为大家提供json相关的文章、下载、课程内容,供大家免费下载体验。

530

2023.08.23

jquery怎么操作json
jquery怎么操作json

操作的方法有:1、“$.parseJSON(jsonString)”2、“$.getJSON(url, data, success)”;3、“$.each(obj, callback)”;4、“$.ajax()”。更多jquery怎么操作json的详细内容,可以访问本专题下面的文章。

308

2023.10.13

go语言处理json数据方法
go语言处理json数据方法

本专题整合了go语言中处理json数据方法,阅读专题下面的文章了解更多详细内容。

74

2025.09.10

css中float用法
css中float用法

css中float属性允许元素脱离文档流并沿其父元素边缘排列,用于创建并排列、对齐文本图像、浮动菜单边栏和重叠元素。想了解更多float的相关内容,可以阅读本专题下面的文章。

554

2024.04.28

C++中int、float和double的区别
C++中int、float和double的区别

本专题整合了c++中int和double的区别,阅读专题下面的文章了解更多详细内容。

95

2025.10.23

require的用法
require的用法

require的用法有引入模块、导入类或方法、执行特定任务。想了解更多require的相关内容,可以阅读本专题下面的文章。

460

2023.11.27

c语言const用法
c语言const用法

const是关键字,可以用于声明常量、函数参数中的const修饰符、const修饰函数返回值、const修饰指针。详细介绍:1、声明常量,const关键字可用于声明常量,常量的值在程序运行期间不可修改,常量可以是基本数据类型,如整数、浮点数、字符等,也可是自定义的数据类型;2、函数参数中的const修饰符,const关键字可用于函数的参数中,表示该参数在函数内部不可修改等等。

520

2023.09.20

php源码安装教程大全
php源码安装教程大全

本专题整合了php源码安装教程,阅读专题下面的文章了解更多详细内容。

194

2025.12.31

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
WEB前端教程【HTML5+CSS3+JS】
WEB前端教程【HTML5+CSS3+JS】

共101课时 | 8.1万人学习

JS进阶与BootStrap学习
JS进阶与BootStrap学习

共39课时 | 3.1万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号