标签: fs

Vue.js webpack:如何获取目录中的文件列表?

我正在尝试获取 SPA 静态应用程序的“资产/插图”目录中所有文件的列表,作为要在我的 Vuex 商店中重新使用的 JSON 对象

资产/插图目录结构是:

assets
  illustrations
    ill-1
       prop-1-1.jpg
       prop-1_2.jpg
    ill-2
       prop-2-1.jpg
       prop-2_2.jpg
    ill-3
       prop-3-1.jpg
       prop-3_2.jpg
Run Code Online (Sandbox Code Playgroud)

我的目标是拥有这样的对象:

  { illustrations: [ill-1: [prop-1-1.jpg, prop-1_2.jpg], ill-2: [prop-2-1.jpg, prop-2_2.jpg], ill-3: [prop-3-1.jpg, prop-3_2.jpg]] }
Run Code Online (Sandbox Code Playgroud)

在我的 App.vue 中,当应用程序组件被挂载时,我会触发一个方法 getIllustrations()

<script>
export default {
  name: 'app',
  data () {
    return {}
  },
  methods: {
    getIllustrations () {
      const path = require('path')
      const fs = require('fs')
      fs.readdir(path.join(__dirname, 'assets/illustrations'), (err, items) => {
        if (err) { console.log(err) }
        console.log(items)
      })
    }
  },
  mounted () {
    this.getIllustrations() …
Run Code Online (Sandbox Code Playgroud)

fs webpack vue.js

12
推荐指数
2
解决办法
1万
查看次数

找不到模块:错误:无法解析 dotenv/lib 中的“fs”

突然,在创建反应生产版本时,我收到此错误。

> safe-courier@0.1.0 build
> react-scripts build

Creating an optimized production build...
Failed to compile.

Module not found: Error: Can't resolve 'fs' in '/workspace/safe-courier/client/node_modules/dotenv/lib'
Run Code Online (Sandbox Code Playgroud)

我在网上搜索过,发现类似的案例,但框架不同,但对于这个问题都没有帮助。

我尝试卸载 dotenv 并再次重新安装,但出现相同的错误。我不确定 fs 模块是 Nodejs 的一部分并与其捆绑在一起可能会出现什么问题

fs node.js dotenv

12
推荐指数
3
解决办法
3万
查看次数

如何确定目录是否为nodejs的空目录

我搜索过Nodejs Doc,但是找不到相关的API.

所以我编写以下代码来确定目录是否为空目录.

var fs = require('fs');

function isEmptyDir(dirnane){
    try{
        fs.rmdirSync(dirname)
    }
    catch(err){
        return false;
    }
    fs.mkdirSync(dirname);
    return true
}
Run Code Online (Sandbox Code Playgroud)

问题:看起来有点麻烦,有更好的方法用nodejs做吗?

path fs node.js

11
推荐指数
3
解决办法
1万
查看次数

在目录NodejS中递归获取所有文件

我的功能有点问题.我想在许多目录中获取所有文件.目前,我可以检索传入参数的文件中的文件.我想检索作为参数传递的文件夹中每个文件夹的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]

谢谢 !

getfiles fs node.js

11
推荐指数
8
解决办法
2万
查看次数

writeFile 不创建文件

错误代码如下所示:

{ Error: ENOENT: no such file or directory, open 'sad' errno: -2, code: 'ENOENT', syscall: 'open', path: 'sad' }
Run Code Online (Sandbox Code Playgroud)

其中“sad”是我想写入的文件名,它不存在。

代码如下所示:

fs.writeFile(filename, JSON_string, { flag: 'w' }, function(err){           
        if(err){
            return console.error(err);
        }           
        return JSON_string;
    });
Run Code Online (Sandbox Code Playgroud)

还有其他类似的问题,但它们的路径都是错误的,以/开头或不以/开头,我只想在运行这个node.js应用程序的根目录上写一个文件(它也在这个目录中用npm初始化...)。

运行

sudo node server4.js
Run Code Online (Sandbox Code Playgroud)

也不行。将标志更改为 w+ 或 wx 或其他什么都无济于事。如果文件存在,代码有效。

节点 v9+。

我需要使用 writeFile() 函数。

writefile fs node.js

11
推荐指数
1
解决办法
2万
查看次数

如何将文件写入NodeJS中的特定目录?

我正在将一些文本写入我们 fs 模块的文件中。

fs.writeFile('result.txt', 'This is my text', function (err) {
                        if (err) throw err;
                        console.log('Results Received');
                        }); 
Run Code Online (Sandbox Code Playgroud)

现在这工作正常。我想将此文件写入项目中的 niktoResults 文件夹,但是当我这样做时

fs.writeFile('/niktoResults/result.txt', 'This is my text', function (err) {
                            if (err) throw err;
                            console.log('Results Received');
                            }); 
Run Code Online (Sandbox Code Playgroud)

它导致错误。我不知道如何定义可以帮助我克服这个问题的目录路径。

Error:
Error: ENOENT: no such file or directory, open '/niktoResults/[object Object].txt'
Run Code Online (Sandbox Code Playgroud)

javascript fs node.js

11
推荐指数
3
解决办法
2万
查看次数

从node.js中删除文件流中的最后一个字符(fs模块)

使用node.js,我试图构建一个对象数组并将它们写入文件.为此,我使用内置的fs库.

在调用之后 var file = fs.createWriteStream('arrayOfObjects.json');,file.write('[')我运行了几个异步函数,最终附加了这样的对象:

file.write(JSON.stringify(objectToAppend) + ',\n')

我能确定当所有的物体已经停止追加,而这正是我跑file.write(']')file.end().我的问题是将最后一个逗号添加到最后一个对象的末尾会导致JSON无效.

由于脚本的异步性质,很难确定最后一个对象的创建位置和时间,因此我想知道是否有一种方法可以从文件流中删除或删除字符.如果是这样,我可以在添加最后一个']'字符之前执行此操作.

我可以手动执行此操作,但我希望将此管道传输到另一个应用程序.我想过使用唯一的解决方案fs.truncate()功能然而,这似乎不为文件流工作,既不file.lengthfile.length()会给我的内容的长度,因为它不是一个字符串,因此很难确定如何或在哪里截断文件.

现在我刚刚添加'{}]'到数组的末尾以使其成为有效的JSON,但是这个空对象可能会在以后引起一些问题.

请注意:我在此流中编写的对象数组非常大,所以我宁愿不结束流并重新打开文件.

javascript string json fs node.js

10
推荐指数
2
解决办法
5074
查看次数

Node.js fs模块和windows路径

Node.js fs模块是否隐式将Windows文件夹路径分隔符转换'\\''/'

例如,如果我在Windows上使用此调用:

fs.readdirSync(dir).forEach(function(file) {

});
Run Code Online (Sandbox Code Playgroud)

file参数有'/'路径分隔符,不是'\\',为什么呢?

windows fs node.js

10
推荐指数
1
解决办法
1万
查看次数

在节点js中不起作用fs.readFile

我有:

 fs.readFile('../services/Prescipcion.xml', "utf8", function (err, data) {
    console.log("err->", err);
    console.log("data", data);
 });
Run Code Online (Sandbox Code Playgroud)

并记录:

err-> { 
  [Error: ENOENT: no such file or directory, open '../services/Prescipcion.xml']
  errno: -2,
  code: 'ENOENT',
  syscall: 'open',
  path: '../services/Prescipcion.xml' 
}
Run Code Online (Sandbox Code Playgroud)

我不明白为什么会这样.

file fs node.js

10
推荐指数
2
解决办法
2万
查看次数

如何将来自多个api请求的多个可读流传递到单个可写流?

-期望的行为
-实际行为
-我尝试过的内容
-再现步骤
-研究


期望的行为

从多个api请求接收的多个可读流通过管道传输到单个可写流。

api响应来自ibm-watson的textToSpeech.synthesize()方法。

需要多个请求的原因是因为该服务5KB对文本输入有限制。

因此18KB,例如一个字符串,需要四个请求才能完成。

实际行为

可写流文件不完整且出现乱码。

该应用程序似乎“挂起”。

当我尝试.mp3在音频播放器中打开不完整的文件时,它说文件已损坏。

打开和关闭文件的过程似乎会增加文件的大小-就像打开文件一样,它会促使更多数据流入其中。

对于较大的输入(例如,四个4000字节或更少的字符串),不良行为更加明显。

我尝试过的

我尝试了几种方法,使用npm包Combined-streamCombined-stream2multistreamarchiver 将可读流传递给单个可写流或多个可写流,它们都会导致文件不完整。我最后一次尝试不使用任何软件包,并在Steps To Reproduce下面的部分中显示。

因此,我在质疑应用程序逻辑的每个部分:

01. Watson文本对语音API请求的响应类型是什么?

语音文档文本,表示api响应类型为:

Response type: NodeJS.ReadableStream|FileObject|Buffer
Run Code Online (Sandbox Code Playgroud)

我很困惑,响应类型是三种可能的事情之一。

在所有尝试中,我一直假设它是一个readable stream

02. 我可以在一个地图函数中发出多个api请求吗?

03. 我可以在中包装每个请求promise()并解决response吗?

04.是否 可以将结果数组分配给promises变量?

05. 我可以声明var audio_files = await Promise.all(promises)吗?

06. 声明之后,所有答复都“完成”了吗?

07. 如何正确地将每个响应传递给可写流?

08. 如何检测所有管道何时完成,以便可以将文件发送回客户端? …

fs node.js express ibm-watson node-streams

10
推荐指数
2
解决办法
730
查看次数