【发布时间】:2020-08-31 04:37:36
【问题描述】:
我正在尝试将optional module loading in 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;
【问题讨论】:
标签: typescript import try-catch optional require