如何使用Node.js在用户主目录中创建一个目录?

11

我正在Ubuntu上开发一个node.js应用程序,并尝试在用户的主目录中以编程方式创建一个应用程序目录。

当我在Node中执行以下JavaScript代码:

const fs = require("fs");
fs.mkdirSync("~/mynewdir");

我遇到了以下错误:

Error: ENOENT: no such file or directory, mkdir '~/mynewdir'
    at Error (native)
    at Object.fs.mkdirSync (fs.js:923:18)
    at repl:1:4
    at sigintHandlersWrap (vm.js:22:35)
    at sigintHandlersWrap (vm.js:73:12)
    at ContextifyScript.Script.runInThisContext (vm.js:21:12)
    at REPLServer.defaultEval (repl.js:346:29)
    at bound (domain.js:280:14)
    at REPLServer.runBound [as eval] (domain.js:293:12)
    at REPLServer.<anonymous> (repl.js:545:10)

执行中:

fs.mkdirSync("/home/dah/mynewdir");

这个方法可以正常工作,但我想使用执行脚本的用户的主目录。

有人有什么建议吗?

编辑- 这个问题不是重复的。 在这种情况下,问题不在于找不到主目录(我已经有了),而是fs模块为什么不使用它。


2
可能是重复的问题:Node.js - 以跨平台的方式查找主目录 - imjared
这不是重复的问题。问题不在于找到主目录,而是为什么nodejs fs包没有按预期使用它。 - java-addict301
1个回答

27

你可以这样做:

const homedir = require('os').homedir();
// `homedir()` returns absolute path so we use `join` here
require("fs").mkdir(require('path').join(homedir, 'mynewdir'));

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接