如何在 nodeJs WS 库中设置 "type:module"?

How do i set "type:module" in nodeJs WS Library?

这个问题已经被问了一百万次,也被回答了一百万次。但我仍然找不到解决方案。我使用的代码正是库文档使用示例中的代码:

 import WebSocket from 'ws';

const ws = new WebSocket('ws://www.host.com/path');

ws.on('open', function open() {
  ws.send('something');
});

ws.on('message', function message(data) {
  console.log('received: %s', data);
});

我没有更改任何一行代码,这是我在 Node Js 中的 唯一 代码。但我的结果是错误:“警告:在 package.json 中加载 es 模块集类型模块或使用 .mjs 扩展名”无论如何。

知道答案只是将“package.json”文件中的“类型”更改为“模块”,我已经读过一千遍了。唯一的问题是:我的 NodeJS 文件夹中有一百万 package.json 个文件,但我不知道应该更新哪个文件。有人可以帮忙吗? 我没有 NodeJS 或 WS 库的经验,所以欢迎任何提示或任何其他解决我问题的方法。

如错误消息所示,如果您想在 Node.js 应用程序中使用 ECMAScript 模块,您可以:

  • 将文件扩展名改为.mjs
  • 将顶级的 "type": "module" 条目添加到 最近的 package.json

此时Node.js会将所有其他形式的输入视为CommonJS模块(您使用require导入)。

备注

这在未来可能会改变,ECMAScript 模块可能会成为默认模块,因此建议始终显式,如果您想使用 CommonJS,请使用 .cjs 扩展名或将 "type": "commonjs" 添加到(最近的)package.json 文件。