标签: fs

readFile 是否缓存内容?

假设我有:

var fs = require('fs');
var a= fs.readFile(__dirname + '/someBigFile.txt', function(err, data) {
    console.log(data);
});
Run Code Online (Sandbox Code Playgroud)

我注意到,如果最初需要 2 秒来读取someBigFile,现在则需要几毫秒。当您多次读取 Node.js 时,是否会发生一些内部缓存?例如:

for(var i =0; i < 10000; i++)
{
    var greet = fs.readFile(__dirname + '/greet.txt', "utf-8", function(err, data) {
    });
}
Run Code Online (Sandbox Code Playgroud)

fs readfile node.js

7
推荐指数
1
解决办法
5745
查看次数

关闭脚本时,fs.writeFile()会写入[object,object]而不是实际对象

我的脚本需要从JSON文件读取和写入.这没有问题.我在本地复制文件,编辑对象,然后将它们写回文件.但是,当我使用Ctrl + C关闭脚本并检查我的文件时,它[object, object]不是应该存在的实际对象.这不是每次都发生,但是很烦人,因为我的脚本依赖于这个文件.

有关如何防止这种错误关闭读者的任何想法?我在写作之前已经尝试检查类型,但它似乎没有多大帮助.

function writeConfig(obj) {
    fs.writeFile('./config.json', obj, function (err) {
        if (err) console.log(err);
    });
}
Run Code Online (Sandbox Code Playgroud)

object filewriter fs node.js

7
推荐指数
1
解决办法
5460
查看次数

无法使用 webpack 解析“fs”并做出反应

当我尝试为节点服务器构建应用程序时,我不断收到描述中的错误。

我最终试图读取 docxtemplater 的 .docx 文件,但如果没有“fs”工作,它看起来就不那么明亮。

我尝试使用在许多解决方案中看到的节点:{fs:“empty”}解决方法,但当我在浏览器上运行它时,它仍然给我相同的错误或传播到控制台。

这是我的 webpack.config.js 中的内容:

var path = require('path');
var webpack = require('webpack');
//var HtmlWebpackPlugin = require('html-webpack-plugin');
var UglifyJsPlugin = require('uglifyjs-webpack-plugin');
var DashboardPlugin = require('webpack-dashboard/plugin');

const sourcePath = path.join(__dirname, './front_end');
const buildPath = path.join(__dirname, './src/bin');

module.exports = {
    devtool: 'source-map',
    //home directory for webpack must be absolute
    //context: sourcePath,
    //Application Execution and Webpack Bundling
    entry: {
        js: path.join(sourcePath, 'index.js')
        //html: './index.html',
    },
    output: {
        //Must be absolute path
        path: sourcePath,
        //publicPath: buildPath,
        //publicPath: path.join(__dirname, '/src/bin'), …
Run Code Online (Sandbox Code Playgroud)

fs node.js webpack docxtemplater

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

在 Expo 应用程序中读取文件作为缓冲区

具体问题是Expo 文件系统只能将文件作为字符串读取,但我想要的用法(更多见下文)是将文件作为缓冲区读取。我正在寻找替代文件系统库,但没有找到明确的解决方案。

在这个级别上,我的问题很简单:在 Expo 应用程序中(因此,本机反应),我如何将文件作为缓冲区读取?

更大的背景是我正在尝试使用 JSFeat 库进行一些照片处理。该库需要Uint8ClampedArray对象,可以通过JPEG-JS库从 JPG 文件创建对象,Expo 相机库会自动将照片保存为 JPG 文件。

jpeg fs react-native expo

7
推荐指数
0
解决办法
839
查看次数

模拟fs功能与开玩笑

首先,我是新手es6jest.

我有一个Logger实例化的类winston,我想测试它.

这是我的代码:

const winston = require('winston');
const fs = require('fs');
const path = require('path');
const config = require('../config.json');

class Logger {
  constructor() {
    Logger.createLogDir(Logger.logDir);
    this.logger = winston.createLogger({
      level: 'info',
      format: winston.format.json(),
      transports: [
        new (winston.transports.Console)({
          format: winston.format.combine(
            winston.format.colorize({ all: true }),
            winston.format.simple(),
          ),
        }),
        new (winston.transports.File)({
          filename: path.join(Logger.logDir, '/error.log'),
          level: 'error',
        }),
        new (winston.transports.File)({
          filename: path.join(Logger.logDir, '/info.log'),
          level: 'info',
        }),
        new (winston.transports.File)({
          filename: path.join(Logger.logDir, '/combined.log'),
        }),
      ],
    });
  }

  static get …
Run Code Online (Sandbox Code Playgroud)

unit-testing fs node.js winston jestjs

7
推荐指数
1
解决办法
7695
查看次数

Node.js 中的虚拟文件系统

是否可以在 Node.js 中创建虚拟目录?

例如,这些是根目录的内容。

.gitignore
README.md
main.js
node_modules
package.json
Run Code Online (Sandbox Code Playgroud)

当我启动节点应用程序时,它是否有可能xyz在根目录中虚拟创建一个目录?该目录实际上并不存在于计算机的文件系统中。

当节点应用程序运行时,如果任何模块(甚至fs)尝试读取文件系统,它将看到如下内容:

.gitignore
README.md
main.js
node_modules
package.json
xyz
Run Code Online (Sandbox Code Playgroud)

我只想在 Node.js 中实现这一点。并且,虚拟目录xyz中也会有文件。
我在谷歌上进行了全面搜索,但找不到任何东西。请问有人可以帮助我吗?

javascript virtual fs node.js

7
推荐指数
0
解决办法
4730
查看次数

为什么我们在 webpack 中设置 node.fs: 'empty' ?

我看到此错误“找不到模块:错误:无法解析......中的'fs'”,解决方案是

// webpack 4
node: {
    fs: "empty"
}


//webpack5
   resolve: {
    extensions: [".ts", ".tsx", ".js", ".css"],
    fallback: {
      fs: false,
    },
  },
Run Code Online (Sandbox Code Playgroud)

但是我不知道“fs:false”或“空”是什么意思?

javascript fs node.js webpack

7
推荐指数
1
解决办法
4004
查看次数

为什么 fs.createWriteStream 抛出“错误:ENOENT:没有这样的文件或目录”错误?

这是代码:

      const dest = fs.createWriteStream('./src/Pages/downloads/' + fileName + '.' + type)

      await drive.files.export({
        fileId: fileId, mimeType: newType}, 
        {responseType: 'stream'},
        function(err, response){
        if(err)return console.log(err);
        response.data.on('error', err => {
            console.log("Found at 911 " + err);
        })
        .pipe(dest, function(){console.log('file path written.')})
        .on('end', ()=>{
            console.log("sent file.")
        })
      });
Run Code Online (Sandbox Code Playgroud)

有几件事需要解释一下。

  1. 这是一个 post 请求,它从 google 云端硬盘文件中获取多个变量,例如名称、id 和 mimetype。这些是 WriteStream 请求中显示的“fileName”和“type”变量。它们已经是预定义的,而不是问题。因此,为了解决这个问题,假设变量类似于 var fileName = test、var type = pdf 和 var newType = "application/pdf"。
  2. drive.files.export 函数是对 Google Drive api 的异步调用,它查找具有“fileId”中注明的特定 ID 的文件/文件夹/项目并将其导出。我在这里试图实现的是将适合该特定 id 的文件导出到由 dest 定义的 WriteStream 中。 …

javascript asynchronous file fs node.js

7
推荐指数
1
解决办法
5684
查看次数

错误:ENOENT:没有这样的文件或目录,打开“fs.js”

我正在使用 expo-cli 在 React Native 中工作。

到目前为止我所做的只是

expo init myapp
Run Code Online (Sandbox Code Playgroud)

在将文本添加到我的 app.js 文件后,我尝试这样做

npm start
Run Code Online (Sandbox Code Playgroud)

这给了我这个错误

Error: ENOENT: no such file or directory, open 'fs.js
Run Code Online (Sandbox Code Playgroud)

我没有使用任何与 fs.js 相关的东西,据我从错误页面看到,错误位于

.../node_modules/metro/src/Server.js:99:24)
Run Code Online (Sandbox Code Playgroud)

其他文件堆栈系统将其引用为metro。我使用 VS code 和 Linux Mint 进行开发。我的博览会版本是:4.3.0

世博会诊断结果

Expo CLI 4.3.0 environment info:
    System:
      OS: Linux 5.4 Linux Mint 20.1 (Ulyssa)
      Shell: 5.0.17 - /bin/bash
    Binaries:
      Node: 10.19.0 - /usr/bin/node
      npm: 6.14.4 - /usr/bin/npm
    npmPackages:
      expo: ~40.0.0 => 40.0.1 
      react: 16.13.1 => 16.13.1 
      react-dom: 16.13.1 => 16.13.1 
      react-native: https://github.com/expo/react-native/archive/sdk-40.0.1.tar.gz => 0.63.2 …
Run Code Online (Sandbox Code Playgroud)

fs react-native expo

7
推荐指数
1
解决办法
4641
查看次数

如何从 SvelteKit 端点返回文件

我正在尝试提供我的 SvelteKit 应用程序生成的 PDF 文件,并允许用户从端点下载它。

我的项目结构如下所示:

---------------------
/src/routes/downloads
---------------------
[file].ts
ABC.pdf
XYZ.pdf
Run Code Online (Sandbox Code Playgroud)

我的[file].ts端点如下所示:

import fs from 'fs'

// ----- GET -----
export async function get({ params }){
  //console.log(params.file) -> ABC

  var pdf = fs.readFileSync('./src/routes/downloads/'+params.file+'.pdf')

  return{
    status:200,
    headers: {
      "Content-type" : "application/pdf",
      "Content-Disposition": "attachment; filename="+params.file+".pdf"
    },
    body: pdf
  }
}
Run Code Online (Sandbox Code Playgroud)

所以当我点击 时http://localhost:3000/downloads/ABC,名为 downloads 的 PDF 文件ABC.pdf

但我的readFileSync道路不适用于生产。据我所知,没有/src/routes文件夹。

如何通过http://localhost:3000URL 提供我的文件?我尝试过的所有方法都会产生 a404并且找不到该文件。我也愿意采用不同的方式来处理这种情况。这只是我对如何在 SvelteKit 中执行此操作的最佳猜测。

rest fs svelte sveltekit

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