不能在带有@pusher/push-notifications-web nodejs 的模块外使用 import 语句 - beams

Cannot use import statement outside a module with @pusher/push-notifications-web nodejs - beams

我正在尝试使用 nodejs 和 express 学习本教程:https://pusher.com/docs/beams/reference/web/#npm-yarn

首先我做了:在添加代码之前 npm install @pusher/push-notifications-web。

但是当我在 index.js 文件中添加这段代码时:

import * as PusherPushNotifications from "@pusher/push-notifications-web";

const beamsClient = new PusherPushNotifications.Client({
  instanceId: "<YOUR_INSTANCE_ID_HERE>",
});

beamsClient.start().then(() => {
  // Build something beatiful 
});

我收到此错误: 语法错误:无法在模块外使用导入语句

如果代码必须在前端或后端,我从教程中也不是很清楚。我都试过了,但得到了相同的结果。

我该如何解决这个问题?

错误是由于您试图在常规 CommonJS 文件中使用 ES 模块特定功能(Node.js 中的默认行为)。但是,您正在查看的是用于 Pusher 的 Web SDK,它不会帮助您实现目标。

您需要 Node.js 的服务器 SDK - https://pusher.com/docs/beams/reference/server-sdk-node/

确认您安装了最新版本的 Node.js 并且您有两种修复方法

  1. 在 package.json 中设置值为“模块”的“类型”字段。这将确保所有 .js 和 .mjs 文件都被解释为 ES 模块。
// package.json
{
  "type": "module"
}
  1. 使用 .mjs 作为文件扩展名,而不是 .js