fs.readdirSync的奇怪行为
Odd behavior of fs.readdirSync
本文关键字:readdirSync fs 更新时间:2023-09-26
我使用nodejs
5.5.0和pm2
1.0.1。我运行脚本:
npm start
在package.json中,它被定义为:
"scripts": {
"start": "pm2 start bin/www --watch"
},
我有一个简单的脚本,它返回视频列表并且它可以工作:
var express = require('express');
var router = express.Router();
router.get('/', function(req, res, next) {
const fs = require('fs');
shows = fs.readdirSync(`public/videos`);
res.render('index', shows);
});
module.exports = router;
但我观察到一些有趣的东西...如果我进行以下修改,它将不再有效,并返回一个空列表:
//shows = fs.readdirSync(`public/videos`);
res.render('index', fs.readdirSync(`public/videos`));
为了使它更有趣,以下工作:
shows = fs.readdirSync(`public/videos`);
res.render('index', fs.readdirSync(`public/videos`));
在我看来,如果存在某种延迟或缓存,fs.readdirSync 工作正常,但如果在同一行上直接调用它,则无法正常工作。
我错过了一些简单的东西吗?
如果我
错了,有人纠正我。
但我相信这是因为res.render
还有第三个论点,你看不到这里callback
注意到哪个论点。
因此,当您在第一个示例中创建变量时,您会阻止直到获得该变量,然后使用运行时可用的变量呈现模板。
但是在第二个示例中,您正在传递该选项,但是res.render
的回调在readdirSync
完成填充之前正在调用。
我想
通了,这实际上是我错过的非常简单的事情。局部变量的名称很重要。
在情况 3 中,尽管 show 没有显式传入,但它实际上对使用 swig 呈现的页面可见。
如果我不想引入变量显示,我可以执行以下操作并且它有效:
res.render('index', {shows: fs.readdirSync('public/videos')});
相关文章:
- 节点fs.stat名称未定义
- nodeJS:使用(fs)尝试访问静态资源,但收到404错误
- 当路径有空格时,NodeJS fs.writeFile在linux上失败
- fs.statSync包含在函数中时抛出错误
- 读取不带fs的txt文件nodejs(来自url)
- 如果文件不存在,fs.watch是否有错误处理程序
- 为什么fs.readFile在windows上花费太多时间
- 使用fs.readdir在vps上返回ENOENT,但在localhost上不返回
- NodeJS FS 不从多个文件返回数据
- fs.readFileSync()在express js应用程序中失败
- 为什么这个 fs.readFile 循环没有将其结果推送到我的数组
- 使用 fs/nodejs 的图像未显示在画布上
- 使用 Node.js 和 socket.io 和 fs 动态显示图像
- 将node.js fs与Webpack一起使用
- fs extra:错误:EPERM:不允许操作,取消链接
- fs.readFileSync()的替代方案
- NodeJS fs.readdr-将回调内部作为对象返回
- Node res.write() and fs.readFile
- fs.readdirSync的奇怪行为
- 什么是~fs.readdirSync在配置文件中的意思