如何使用Typescript从require捕获抛出的错误?

如何使用Typescript从require捕获抛出的错误?,typescript,import,try-catch,optional,require,Typescript,Import,Try Catch,Optional,Require,我正在尝试使用该模块 我需要这样做,因为我正在使用TypeScript构建一个库,它必须在nodejs、浏览器和浏览器扩展上工作 不幸的是,底层Mozilla在非WebExtension上下文中抛出了一个错误 使用TypeScript的可选加载,它会抛出一个错误,即使它不应该在上下文中加载模块 使用try-catch块,我无法捕获错误 以下是样本: 使用可选加载 从webextension polyfill ts导入*作为浏览器; let browser:any=false; //eslint禁

我正在尝试使用该模块

我需要这样做,因为我正在使用TypeScript构建一个库,它必须在nodejs、浏览器和浏览器扩展上工作

不幸的是,底层Mozilla在非WebExtension上下文中抛出了一个错误

使用TypeScript的可选加载,它会抛出一个错误,即使它不应该在上下文中加载模块

使用try-catch块,我无法捕获错误

以下是样本:

使用可选加载

从webextension polyfill ts导入*作为浏览器; let browser:any=false; //eslint禁用下一行@typescript eslint/ban ts ignore //@ts忽略 //eslint禁用下一行prettier/prettier 如果是chrome的类型!==未定义&&chrome.runtime&&chrome.runtime.id{ 浏览器=所需的WebExtension polyfill ts; }否则{ console.loga; } 导出默认浏览器; 使用try-catch

let browser:any=null; 试一试{ 浏览器=所需的WebExtension polyfill ts; }抓住e{ console.loga; } 导出默认浏览器;
不确定为什么无法捕获错误,但可能尝试typescript导入?

看起来它会给你一个承诺,你会抓住的

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

我发现了为什么它一定会这样。只需通过browserify删除其用法,即可解决此问题。

Hi。我试过了你的要求。我应该使用browserify和tsify在浏览器中进行测试。也许这与他们转换代码的方式有关。下面是我使用的代码:let browser:any=false;importwebextension polyfill ts.thenBrowser=>{browser=browser;}.Catch=>{};导出默认浏览器;这可能不太合适,因为导出是同步的。你可以试试出口承诺。哦!你说得对,我没想过。但无论如何,这不会改变结果。export const browser:any=importweextension polyfill ts.thenbrowser=>browser.catch=>{console.loga;返回false;};仍然抛出错误,而没有被捕获。