我有这段代码(取自这个问题):
var walk = function(dir, done) {
var results = [];
fs.readdir(dir, function(err, list) {
if (err)
return done(err);
var pending = list.length;
if (!pending)
return done(null, results);
list.forEach(function(file) {
file = path.resolve(dir, file);
fs.stat(file, function(err, stat) {
if (stat && stat.isDirectory()) {
walk(file, function(err, res) {
results = results.concat(res);
if (!--pending)
done(null, results);
});
} else {
results.push(file);
if (!--pending)
done(null, results);
}
});
});
});
};
Run Code Online (Sandbox Code Playgroud)
我正在努力遵循它,我想我理解除了接近结尾的所有内容!--pending.在这种情况下,该命令的作用是什么?
编辑:我感谢所有进一步的评论,但这个问题已被多次回答.不管怎么说,还是要谢谢你!
我有这样的文件结构:
root
|_ fruits
|___ apple
|______images
|________ apple001.jpg
|________ apple002.jpg
|_ animals
|___ cat
|______images
|________ cat001.jpg
|________ cat002.jpg
Run Code Online (Sandbox Code Playgroud)
我想,使用Javascript和Node.js,监听这个根目录和所有子目录,并创建一个镜像这个目录结构的JSON,每个节点包含类型,名称,路径和子节点:
data = [
{
type: "folder",
name: "animals",
path: "/animals",
children: [
{
type: "folder",
name: "cat",
path: "/animals/cat",
children: [
{
type: "folder",
name: "images",
path: "/animals/cat/images",
children: [
{
type: "file",
name: "cat001.jpg",
path: "/animals/cat/images/cat001.jpg"
}, {
type: "file",
name: "cat001.jpg",
path: "/animals/cat/images/cat002.jpg"
}
]
}
]
}
]
}
];
Run Code Online (Sandbox Code Playgroud)
这是一个coffeescript JSON:
data =
[
type: …Run Code Online (Sandbox Code Playgroud) 我们使用不允许目录列表的Web服务器.
有一个特定的目录我想允许列出.
如何制作一个包含此目录内容的简单HTML文件?
我希望能够增加watch在任务gulp到所有的js中的文件frontend/js和低于任何其他js文件
gulp.watch('./frontend/js/**/*.js', ['browserify']);
Run Code Online (Sandbox Code Playgroud)
这只会将js文件定位到一个文件夹深处
我目前使用如下方式将单个对象上传到S3:
var options = {
Bucket: bucket,
Key: s3Path,
Body: body,
ACL: s3FilePermissions
};
S3.putObject(options,
function (err, data) {
//console.log(data);
});
Run Code Online (Sandbox Code Playgroud)
但是当我有一个大型资源文件夹时,我使用AWS CLI工具.
我想知道,是否有一种原生方式与aws sdk做同样的事情(将整个文件夹上传到s3)?
我正在binding.gyp为我的新node.js模块编写文件.我将所有源文件都放在src/子目录下.我想在构建模块时使用所有这些.我不是每次添加新的cpp文件时都修改binding.gyp,而是希望通过一些通配符机制列出所有cpp文件.node-gyp支持吗?像跟随的东西(这是行不通的
{
'targets' : [
{
'target_name' : 'mymod',
'sources' : 'src/*.cpp'
}
]
}
Run Code Online (Sandbox Code Playgroud)
我查看了https://code.google.com/p/gyp/wiki/InputFormatReference,但没有找到任何有用的内容.
我的功能有点问题.我想在许多目录中获取所有文件.目前,我可以检索传入参数的文件中的文件.我想检索作为参数传递的文件夹中每个文件夹的html文件.我将解释如果我输入参数"test"我检索"test"中的文件,但我想检索"test/1/*.html","test/2 / ./ .html":
var srcpath2 = path.join('.', 'diapo', result);
function getDirectories(srcpath2) {
return fs.readdirSync(srcpath2).filter(function (file) {
return fs.statSync(path.join(srcpath2, file)).isDirectory();
});
}
Run Code Online (Sandbox Code Playgroud)
结果:[1,2,3]
谢谢 !
在 5 分钟内创建AWS S3 网站 YT 视频和在 Amazon S3 Pulumi 上托管静态网站教程中,详细解释了如何使用 Pulumi 在 S3 上创建托管网站。
示例代码中使用了Pulumi的Bucket和BucketObject 。第一个创建 S3 存储桶,后者创建对象,这些对象主要用于index.html公共访问,如下所示:
const aws = require("@pulumi/aws");
const pulumi = require("@pulumi/pulumi");
const mime = require("mime");
// Create an S3 bucket
let siteBucket = new aws.s3.Bucket("s3-website-bucket");
let siteDir = "www"; // directory for content files
// For each file in the directory, create an S3 object stored in `siteBucket`
for (let item of require("fs").readdirSync(siteDir)) { …Run Code Online (Sandbox Code Playgroud) amazon-s3 amazon-web-services nuxt.js pulumi static-site-generation
我能够实现目录中的递归文件遍历(即探索目录中的所有子目录和文件)。为此,我使用了有关堆栈溢出的相应帖子的答案。其片段如下:
var fs = require("fs");
var tree = function(dir, done) {
var results = {
"path": dir,
"children": []
};
fs.readdir(dir, function(err, list) {
if (err) { return done(err); }
var pending = list.length;
if (!pending) { return done(null, results); }
list.forEach(function(file) {
fs.stat(dir + '/' + file, function(err, stat) {
if (stat && stat.isDirectory()) {
tree(dir + '/' + file, function(err, res) {
results.children.push(res);
if (!--pending){ done(null, results); }
});
} else {
results.children.push({"path": dir + "/" …Run Code Online (Sandbox Code Playgroud) 我正在"走"十万个JSON文件,读取内容并在发生错误时抛出错误:
walk(__dirname + '/lastfm_test', 'json', function (err, files) {
files.forEach(function (filePath) {
fs.readFile(filePath, function (err, data) {
if (err) throw err;
});
});
});
Run Code Online (Sandbox Code Playgroud)
walk函数很大程度上受这个问题的启发(chjj答案).在一些迭代之后,该行if (err) throw err被执行.错误抛出是:
错误:好的,打开'path/to/somejsonfile.json'
有机会调查这里发生的事情吗?我敢肯定的是,walk功能是确定:其实更换呼叫fs.readFile()与console.log(filePath)显示的路径.没有错误.
一些有用的信息:Windows 7 x64,node.exe x64 .0.10.5.Last.fm数据集从这里下载.
我有一个反应应用程序。我使用 webpack 进行生产构建。现在我尝试设置一个小型 koa 服务器来为生产环境提供 webpack 生成的静态文件。
所以我这样做了
import Koa from 'koa'
import serve from 'koa-static'
const app = new Koa()
app.use(serve('dist/'))
app.listen(3001)
Run Code Online (Sandbox Code Playgroud)
dist/文件(index.html、bundle 等)所在的目录在哪里。这效果很好,但仅适用于路线“/”(localhost:3001 /)在我的应用程序中,我使用反应路由器,因此我需要以示例方式转到/登录(localhost:3001/login)。但当我尝试时,我得到“未找到”。对于 devServer(通过 webpack),这条路线效果很好。我只需要始终服务/dist,无论路线如何。如何做这个白相思木?
各位晚安.我可能遇到一些简单的递归函数问题.问题是以递归方式列出给定文件夹中的所有文件.
目前,我已经设法使用一个简单的函数列出目录中的文件:
fs.readdirSync(copyFrom).forEach(file => {
let fullPath = path.join(copyFrom, file);
if (fs.lstatSync(fullPath).isDirectory()) {
console.log(fullPath);
} else {
console.log(fullPath);
} });
Run Code Online (Sandbox Code Playgroud)
我尝试了各种各样的方法,do{} ... while()但我无法做到.
由于我是javascript的初学者,我终于决定向你们寻求帮助.
提前感谢您的宝贵帮助.