【发布时间】:2019-02-08 02:54:18
【问题描述】:
此代码应该可以工作,但错误消息是“无法解构”
const fs = require('fs');
let { remote: { app } } = require('electron');
let userDataPath = app.getPath('userData');
let filePath = path.join(userDataPath, 'preferences.json')
const readPreferences = () => {
return JSON.parse( fs.readFileSync(filePath) )
}
const writePreferences = (inputs) => {
inputs && fs.writeFileSync(filePath, JSON.stringify(inputs));
}
module.exports = {readPreferences, writePreferences };
但如果我在每个函数中添加所有 let 变量,代码就可以工作。
这正常吗?为什么会这样。
并且应该在那里重复那些?
我在一个单独的演示中尝试过,一切正常:
// - two.js
let two = "this is something"
exports.one = () => {
return two
}
// - index.js
const { one } = require('./two')
let two = "anything"
console.log(one()) // -> this is something
编辑:这虽然有效
const fs = require('fs');
const readPreferences = () => {
let { remote: { app } } = require('electron');
let userDataPath = app.getPath('userData');
let filePath = path.join(userDataPath, 'preferences.json')
return JSON.parse( fs.readFileSync(filePath) )
}
const writePreferences = (inputs) => {
let { remote: { app } } = require('electron');
let userDataPath = app.getPath('userData');
let filePath = path.join(userDataPath, 'preferences.json')
inputs && fs.writeFileSync(filePath, JSON.stringify(inputs));
}
module.exports = {readPreferences, writePreferences };
【问题讨论】:
-
唯一相关的是“无法解构”。转到 specific 行,然后在 SSCCE 中将其拉出。尝试在右侧使用不同的值,直到找到“相关原因”(即最小故障情况)。 read a reference on ES6 destructuring rules 会很方便。
-
它在其他页面上确实有效,并且在函数中声明时有效?
-
检查使用 'var' 关键字而不是 'let'。因为不像'var'(它在全局范围内定义一个变量,或者在本地定义一个整个函数,而不管块范围如何)。如果我们在函数外部使用 'let' 声明一个变量,那么它不会在函数内部找到该变量的值,该值未绑定到函数的范围。
标签: javascript ecmascript-6 electron node-modules