const targetFolder = './app/images/';
const fs = require('fs');
const jsonfile = require('jsonfile');
let json = [];
fs.readdir(targetFolder , (err, files) => {
files.forEach(file => {
json.push({file.split('.')[0]})
});
})
jsonfile.writeFile(targetFolder , json);
当 json.push 在这里不起作用时,这很奇怪。当我像控制台一样
console.log(file.split('.')[0]) I can see the list of files in my terminal.
最佳答案
您收到意外 token 错误,因为存在意外 token :
json.push({file.split('.')[0]})
// Here -------^
对象初始值设定项由键/值对组成。在 ES2015+ 中,如果我们从变量获取值,我们可以只包含该变量,并且将从变量名称推断出键,但不能使用任何任意表达式来做到这一点。
例如,如果您希望对象的键为 foo
:
json.push({foo: file.split('.')[0]});
或者,如果您根本不需要对象,只需要值,请删除 {}
:
json.push(file.split('.')[0]);
<小时/>
修复 json.push
调用后,下一个问题是,在调用 writeFile
之前不会调用 json.push
,因为 readdir
会异步调用其回调。更多:fs.readdir
和 How do I return the response from an asynchronous call?
关于javascript - 使用node.js意外的 token 输出json文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42975329/