node js FS accessSync设置全局变量路径失败

时间:2016-01-11 10:53:16

标签: javascript node.js synchronization fs

我在nodejs的FS核心中遇到Sync功能问题。 例如,我有一个具有此语法的nodejs文件

var y;
fs.accessSync("real_exixs_path", fs.R_OK | fs.W_OK, function(err) {
  if (err) {
    console.log("File error!");
  } else {
    y = "foo";
  }
});

运行此代码后,全局“y”变量仍为undefined,并且不会设置为“foo”。有人能帮我吗?

2 个答案:

答案 0 :(得分:6)

接受的答案有错误,无论文件是否存在,它都将始终“成功”。

更正版本:

try{
   require('fs').accessSync("filename.ext", fs.R_OK | fs.W_OK)
   //code to action if file exists

}catch(e){
   //code to action if file does not exist
}

或者将其包装在函数中:

function fileExists(filename){
  try{
    require('fs').accessSync(filename)
    return true;
  }catch(e){
    return false;
  }
}

答案 1 :(得分:1)

来自nodejs FS文档的

  

fs.accessSync(路径[,模式])#

     

fs.access()的同步版本。如果任何可访问性检查失败,则抛出此异常,否则不执行任何操作。

accessSync函数没有回调参数,因此您需要抛出

这里有一个例子:

try{
   fs.accessSync("real_exixs_path", fs.R_OK | fs.W_OK)
}catch(e){
   //error
}
//success!