我正在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变量获取路径,它将起作用。
答案 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');