如何使用Typescript从需求中捕获引发的错误?

问题描述 投票:0回答:2

我正在尝试将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
2个回答
1
投票

[不确定为什么无法捕获该错误,但也许尝试输入打字稿?https://mariusschulz.com/blog/dynamic-import-expressions-in-typescript

看起来它返回了您可以兑现的承诺。

import("./widget").then(widget => {
  widget.render(container);
}).catch((err) => { console.log('error', err) });

0
投票

我发现了为什么它绑定到tinyify。只需通过browserify删除其用法即可解决此问题。

© www.soinside.com 2019 - 2024. All rights reserved.