使用node-pushnotifier遇TypeError:PushNotifier不是构造函数
解决node-pushnotifier在.mjs文件中"PushNotifier is not a constructor"错误
问题原因
该错误源于ES模块(.mjs)的导入方式与node-pushnotifier包的导出结构不匹配——这个包采用CommonJS规范导出,而非ES模块默认导出格式,导致直接默认导入无法获取到构造函数。
修复方案
方案1:调整导入语句适配导出结构
先在代码开头添加日志,确认包的导出内容:
import PushNotifier from "node-pushnotifier"; console.log(PushNotifier);
运行后根据输出调整导入方式:
- 若输出是包含
PushNotifier属性的对象,改用命名导入:import { PushNotifier } from "node-pushnotifier"; - 若输出是模块对象,提取默认导出:
import * as PushNotifierModule from "node-pushnotifier"; const PushNotifier = PushNotifierModule.default;
方案2:在ES模块中兼容CommonJS导入
利用Node.js内置的createRequire工具,在.mjs文件中直接使用CommonJS的导入逻辑:
import { createRequire } from 'module'; const require = createRequire(import.meta.url); const PushNotifier = require("node-pushnotifier");
方案3:核对包版本与官方说明
执行命令查看当前安装的包版本:
npm list node-pushnotifier
查看本地node_modules/node-pushnotifier/README.md,确认对应版本的官方导入指引,部分旧版本可能仅支持CommonJS导入方式。
内容的提问来源于stack exchange,提问作者Goldsucher07
相关产品推荐
相关产品推荐

