文件名存储在环境变量中时,无法使用nodejs fs模块读取文件

时间:2018-10-29 08:04:34

标签: node.js environment-variables fs

我正在ubuntu服务器16.04中运行节点应用程序。我已经设置了一个环境变量:

export FILE_PATH="file-path"

然后我尝试在节点脚本中读取文件:

const fs   = require('fs');
console.log(process.env.FILE_PATH); // gives correct path.
const data = fs.readFileSync((process.env.FILE_PATH || ""), 'utf8');

但是我在调​​试器中收到“没有这样的文件或目录”错误。该文件已存在,并且具有必需的权限。如果我直接给出路径而不是从env变量获取路径,它将起作用。

2 个答案:

答案 0 :(得分:0)

您可能需要使用Node.js的path模块来解析路径。像这样:

const data = fs.readFileSync(path.resolve((process.env.FILE_PATH || "")), 'utf8');

答案 1 :(得分:0)

我找出了此问题的根本原因。我设置的所有环境变量最后都有一个“ \ r”。

console.log(process.env)提供输出:

...
FILE_PATH: '/tmp/file.txt\r',
...

作为快速解决方案,我使用trim()删除了多余的字符:

const data = fs.readFileSync((process.env.FILE_PATH.trim() || ""), 'utf8');