我试图在Chrome浏览器扩展中使用邮政哑剧 JS库,使用Manifest V3。我的扩展产生了一个服务工作者,我试图在那里使用这个库。为了导入,我尝试了两种方法
const { PostalMime } = require("postal-mime");和
import { PostalMime } from "postal-mime";虽然我的代码如下所示:
const parser = new PostalMime();
parser.parse(result).then((email) => console.log(email));变量result包含一个标准的电子邮件消息,作为我想解析的字符串。在这两种情况下,我都会得到以下错误:
Uncaught (in promise) TypeError: PostalMime is not a constructor
at sw.js:66:1
(anonymous) @ sw.js:66
Promise.then (async)
(anonymous) @ sw.js:61我做错了什么?
谢谢你的帮助,
GTP
发布于 2022-07-19 10:50:28
最后我使用了库电子邮件-mime解析器。虽然这个问题并不是一个真正的解决方案,尽管它的功能比邮政哑剧少,但至少我可以从盒子里导入它,而不用考虑Webpack的配置。
发布于 2022-07-15 11:46:25
这不是一个ES模块,所以要导入它,一般需要使用webpack或browserify,即为您的扩展构建系统。幸运的是,在本例中,您可以在unpkg.com上找到一个预先构建的js文件,您应该手动下载到您的扩展名目录中。
import './postal-mime.js'; // path and .js suffix are required for native import!
const PostalMime = postalMime.default;
const parser = new PostalMime();
parser.parse(result).then((email) => console.log(email));注意,由于post-mime.js不是原生ES模块,所以我们使用了一个匿名导入来让库在一个全局变量中创建它的导出。要查看变量(postalMime)的名称,请查看文件的开头,您将在其中看到exports.postalMime=。对于default,它是npm模块实现所使用的内部机制,当您检查postalMime对象时,您可以在devtools控制台中看到它。其他库可能会使用多个命名属性。
https://stackoverflow.com/questions/72980605
复制相似问题