Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 如何在创建文件时将其写入目录?_Node.js - Fatal编程技术网

Node.js 如何在创建文件时将其写入目录?

Node.js 如何在创建文件时将其写入目录?,node.js,Node.js,我正在尝试在目录中创建一个文件,就在目录创建之后。我不确定我错在哪里。我认为这可能是因为代码执行速度太快,以至于它没有意识到创建了一个目录?但我应该会有错误,以下是我到目前为止的情况: var userFolder = "/api/forums/users/"+user.name try{ fs.accessSync(userFolder) }catch(e){ if(!fs.

我正在尝试在目录中创建一个文件,就在目录创建之后。我不确定我错在哪里。我认为这可能是因为代码执行速度太快,以至于它没有意识到创建了一个目录?但我应该会有错误,以下是我到目前为止的情况:

    var userFolder = "/api/forums/users/"+user.name
            try{
                fs.accessSync(userFolder)
            }catch(e){
                if(!fs.existsSync(userFolder)){
                    var userdirectory = "/Server/yeee/server/api/forums/users/"+user.name

                    fs.mkdirSync(userdirectory) <----- this makes directory with user.name

                    fs.access(userdirectory,function(){ <---- Me trying to access the directory that was just created

                        fs.writeFileSync(userdirectory+"test","file") <---- assuming it succeeds, create file in that directory. 
                    })
                }
            }
var userFolder=“/api/forums/users/”+user.name
试一试{
fs.accessSync(userFolder)
}捕获(e){
如果(!fs.existsSync(userFolder)){
var userdirectory=“/Server/yeee/Server/api/forums/users/”+user.name
fs.mkdirSync(userdirectory)始终使用
path.join()
path.resolve()
而不是使用“/”或“\”连接,否则会遇到跨平台问题(linux与windows) 例如

您必须提供目录的完整路径。您可以使用
\uu dirname
节点全局变量获取当前工作目录,例如:

path.join(__dirname, users);

我认为这会导致您的问题。

+“test”应该是+“/test”,但正确的方法是如下所述的path.join。另外,混合使用sync和async有点可怕;)您应该完全异步,并使用fs extra来获得promises@naholyr谢谢你,伙计,“/测试”修复了它,我发誓这可能是最简单的事情。洛尔,它修复了你的代码,但它仍然不理想,我强烈建议你在下面给出答案。
\uu dirname
不一定与当前工作目录相同(它是通过
process.cwd()获得的
).
\uuuu dirname
是当前模块的加载源。对于从子目录加载的依赖模块,这两个模块不一定相同,而且几乎永远不会相同。
path.join(__dirname, users);