node.js - 无法读取 NodeJS 中未定义的属性 'F_OK'

标签 node.js nestjs

我正在尝试在 NestJS 中使用 ExcelJS。出于某种原因,我无法打开 xlsx 文件。

exceljs 使用此代码检查文件是否存在

  fs: {
    exists: function exists(path) {
      return new Promise(function (resolve) {
        console.log(path);
        fs.access(path, fs.constants.F_OK, function (err) {
          resolve(!err);
        });
      });
    }
  },

该代码返回无法读取未定义的属性“F_OK”。第 4 行的 Console.log 返回路径我发送正确

但是,如果我尝试使用此代码从我的服务访问同一文件

    fs.access(this.file, fs.constants.F_OK | fs.constants.W_OK, (err) => {
        if (err) {
            console.error(
                `${this.file} ${err.code === 'ENOENT' ? 'does not exist' : 'is read-only'}`);
        } else {
            console.log(`${this.file} exists, and it is writable`);
        }
    });

该代码返回“file.xlsx 存在,并且它是可写的”。有什么区别,为什么我不能用 exceljs 读取同一个文件?

最佳答案

我遇到了同样的问题。

原因是因为我正在导入 fs/promises 并且 constants 存储在 fs

基本上,您试图从未声明它们的地方获取常量

我是这样解决的:

import fsp from 'fs/promises'
import fs from 'fs'

await fsp.access(testDir, fs.constants.F_OK);

你可以看到对于 access 我使用 fsp.access 而对于 constants fs.constants.F_OK

关于node.js - 无法读取 NodeJS 中未定义的属性 'F_OK',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64959425/

相关文章:

orm - TypeORM - 重复键值违规

javascript - 有没有办法在 NestJS 中使用静态方法和依赖注入(inject)?

graphql - Nestjs/GraphQL - Playground 返回查询的空错误。我的解析器?

amazon-web-services - NestJS:图像上传和服务 API

typescript - 使用 @nestjs/mongoose 时如何将实例/静态方法添加到 Mongoose 模式? ( typescript 问题)

node.js - 让 npm 从 Git 仓库中获取最新的包

node.js - 如何处理循环中的 promise ?

javascript - react redux 异步 mapStateToProps

javascript - 在使用 vue cli 3 创建的项目中,在哪里可以找到或如何设置 htmlWebpackPlugin.options.title?

node.js - 添加键值对数据