如何查看Node.js云功能环境的文件系统性质?

时间:2019-12-04 01:34:43

标签: google-cloud-platform google-cloud-functions

当我将Cloud Function部署到GCP(用Node.js编写)时,如何查看我的文件系统环境以进行调试?如果我想知道当前目录是什么,或者应用程序旁边有什么文件,怎么办?

1 个答案:

答案 0 :(得分:2)

当我们部署Cloud Function时,将出现完整的Node.js环境。我们可以在其中运行任意Node.js逻辑。这包括日志记录信息,这些信息随后将显示在Stackdriver日志中。因此,我们可以记录当前工作目录路径以及当前目录中所有文件的列表。我们可以将其用作诊断辅助工具。这是一个示例:

const fs = require('fs');
exports.helloWorld = (req, res) => {
  console.log(`CWD: ${process.cwd()}`);
  fs.readdir('.', function (err, files) {
    if (err) {
        return console.log('Unable to scan directory: ' + err);
    } 
    files.forEach(function (file) {
        console.log(file); 
    });
    res.status(200).send('Done!');
  });
};

您可以将此逻辑合并到自己的应用中进行测试。

这是一个替代版本,显示了所有文件和子目录的递归列表。

const fs = require('fs');
const walk = function(dir) {
  var results = [];
  var list = fs.readdirSync(dir);
  list.forEach(function(file) {
    file = dir + '/' + file;
    var stat = fs.statSync(file);
    if (stat && stat.isDirectory()) { 
      results = results.concat(walk(file));
    } else { 
      results.push(file);
    }
 });
 return results;
}

exports.helloWorld = (req, res) => {
  let message = req.query.message || req.body.message || 'Hello World!';
  console.log(`CWD: ${process.cwd()}`);
  console.log(`Dir Listing: ${walk('.')}`);
  res.status(200).send('Done!');
};

将上述算法归功于node.js fs.readdir recursive directory search