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);