如何在 NodeJS 中获取 OS 用户名?

How to get OS username in NodeJS?

我如何使用 NodeJS get/find 计算机所有者当前(登录时)使用的用户名?

我搜索了一下,但没有找到任何东西。

这一个对象您将获得用户名:

let os = require('os')
console.log(os.userInfo());

如果它不需要跨操作系统(仅基于 *nix),您可以采用一种方法(请记住,如果您对其进行参数化,使用 exec 可能存在潜在风险):

const Promise = require( 'bluebird' ),
      exec    = Promise.promisify( require( 'child_process' ).exec );

exec( 'id -un' ).then( ( username )=> {
 // do something about it
});

如果你想使用 bluebird 作为 promise,请不要忘记:npm install bluebird --save

我不知道为什么,但有人添加了一个答案,然后很快就删除了...不过我很快就抓住了它,经过检查,这是我做事的最短、最有效的方法之前问过:

require("os").userInfo().username

唯一的问题是,在 Windows 10 中,它 returns 已使用的所有者帐户的名字(请注意)。 其他一切都完全正常!

如果你想获取有关客户端的信息 在你的服务器上调用路由,你必须解析客户端用户代理。

https://msdn.microsoft.com/en-us/library/ms537503(v=vs.85).aspx

您可以使用这些示例获取带有节点的客户端用户代理:

How to handle user-agent in nodejs environment?

当然,最简单的方法是使用 username

安装:

$ npm install username

然后:

const username = require('username');

(async () => {
    console.log(await username());
    //=> 'current_username'
})();

process.env.USER 至少在 MAC 或 Linux 中也应该有效。例如

let user = process.env.USER || ""

你可以简单地使用

app.getPath('home')

它将return当前用户的主路径。

无依赖方法:

function getUsername() {
    return (
        process.env.SUDO_USER ||
        process.env.C9_USER ||
        process.env.LOGNAME ||
        process.env.USER ||
        process.env.LNAME ||
        process.env.USERNAME
    );
}