如何使用 Typescript 捕获 require 抛出的错误?
How to catch thrown error from require using Typescript?
我正在尝试使用 optional module loading in Typescript for the 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?
https://mariusschulz.com/blog/dynamic-import-expressions-in-typescript
看起来像returns一个你能抓住的承诺。
import("./widget").then(widget => {
widget.render(container);
}).catch((err) => { console.log('error', err) });
我发现了为什么它被绑定到 tinyify。只需通过 browserify 删除它的使用即可解决问题。
我正在尝试使用 optional module loading in Typescript for the 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? https://mariusschulz.com/blog/dynamic-import-expressions-in-typescript
看起来像returns一个你能抓住的承诺。
import("./widget").then(widget => {
widget.render(container);
}).catch((err) => { console.log('error', err) });
我发现了为什么它被绑定到 tinyify。只需通过 browserify 删除它的使用即可解决问题。