我尝试在Typescript中使用可选模块加载来加载webextension-polyfill-ts模块。
我需要这样做,因为我正在使用TypeScript构建一个库,它必须在nodejs,浏览器和浏览器扩展上工作。
不幸的是,底层Mozilla的webextension-polyfill在非WebExtension上下文中抛出错误。
使用TypeScript的可选加载,即使它不应该加载上下文中的模块,它也会抛出错误。
使用try-catch块,我无法捕获错误。
以下是示例:
使用可选加载
import * as Browser from "webextension-polyfill-ts";
let browser: any = false;
// eslint-disable-next-line @typescript-eslint/ban-ts-ignore
// @ts-ignore
// eslint-disable-next-line prettier/prettier
if (typeof chrome !== "undefined" && chrome.runtime && chrome.runtime.id) {
browser = require("webextension-polyfill-ts");
} else {
console.log("a");
}
export default browser;
使用try-catch
let browser: any = null;
try {
browser = require("webextension-polyfill-ts");
} catch (e) {
console.log("a");
}
export default browser;
2条答案
按热度按时间kdfy810k1#
不知道为什么你不能捕获错误,但也许可以尝试typescript导入?https://mariusschulz.com/blog/dynamic-import-expressions-in-typescript
看起来它返回了一个你可以捕获的promise。
wwtsj6pe2#
我知道为什么它不工作。它被绑定到tinyify。简单地删除它的使用browserify修复了这个问题。