我有以下try/catch
:
try {
var { app } = require('electron').remote;
} catch (e) {
var { app } = require('electron');
}
尽管它是有效的,但 ESLint 存在一个问题,即 app
已被声明。
因此,我尝试将 var 移至 try/catch
上方,但 =
出现错误,表明它是一个意外 token
像这样:
var app;
try {
{ app } = require('electron').remote;
} catch (e) {
{ app } = require('electron');
}
执行此操作的正确方法是什么,以便 ESLint 不会提示?
最佳答案
首先,由于您显然使用的是 ES2015+(又名“ES6+”),请考虑使用 let
或 const
而不是 var
。在 ES2015+ 世界中, var
基本上没有用处。 (但以下两者也适用于 var
。)
解析问题是因为 {
看起来像 block 的开头。您可以将整个作业 package 在 ()
中来解决这个问题:
let app;
try {
({ app } = require('electron').remote);
} catch (e) {
({ app } = require('electron'));
}
示例(伪造 require
):
// fake require
function require(name) {
return {app: {name: "I'm the app"}};
}
let app;
try {
({ app } = require('electon').remote);
} catch (e) {
({ app } = require('electron'));
}
console.log(app);
或者根本不使用解构:
let app;
try {
app = require('electron').remote.app;
} catch (e) {
app = require('electron').app;
}
// fake require
function require(name) {
return {app: {name: "I'm the app"}};
}
let app;
try {
app = require('electron').remote.app;
} catch (e) {
app = require('electron').app;
}
console.log(app);
关于javascript - 应用程序已在 try/catch 中声明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41987045/