如何修复“在索引 0 处找到带有非文字参数的 fs.readFile”?

问题描述 投票:0回答:1

我正在尝试在 TypeScript 项目中添加 eslint-plugin-security。然而,对于这些代码

import { promises as fsp } from 'fs';
import fs from 'fs';
import path from 'path';

const index = await fsp.readFile(path.resolve(__dirname, './index.html'), 'utf-8');
const key = fs.readFileSync(path.join(__dirname, './ssl.key'));
await fsp.writeFile(path.resolve(__dirname, './sitemap.xml'), sitemap);

我收到了很多这样的 ESLint 警告:

warning Found fs.readFile with non literal argument at index 0   security/detect-non-literal-fs-filename
warning Found fs.readFileSync with non literal argument at index 0  security/detect-non-literal-fs-filename
warning Found fs.writeFile with non literal argument at index 0  security/detect-non-literal-fs-filename

我在 https://github.com/nodesecurity/eslint-plugin-security#detect-non-literal-fs-filename 找到了有关此 ESLint 错误的文档

但我仍然不知道如何解决它。任何指南都会有帮助!谢谢


更新

发现只要使用传递

path.join
path.resolve
返回的路径就会出现这个ESLint问题。

如果我更改为绝对路径,ESLint 问题就消失了。然而,这会失去相对路径的好处

path.join
path.resolve

fs.readFileSync('/Users/me/project/ssl.key');

寻找替代/更好的方法(如果存在)。

(可能是误报?询问于 https://github.com/nodesecurity/eslint-plugin-security/issues/65

node.js eslint typescript2.0 typescript-eslint
1个回答
0
投票

这是一场虚惊,是的。它已在 https://github.com/eslint-community/eslint-plugin-security/pull/109 中修复,并根据

项目的变更日志
[email protected] 中发布。

© www.soinside.com 2019 - 2024. All rights reserved.