如何解决“TypeError: process.getuid不是一个函数”的问题

36

我正在使用react.js和laravel,通过yarn run watch来监视更改,这一直很好,直到在完成Windows 10更新后,每次我使用yarn或npm时都会遇到webpack的错误(我真的不知道是否可能是原因)- 我希望能得到任何帮助。

if (!e && fileOwnerId === process.getuid()) utimesSync(openCollectivePath, now, now)

错误:

TypeError: process.getuid is not a function at C:\project_path\node_modules\webpack-cli\bin\cli.js:352:43 at FSReqCallback.oncomplete (fs.js:153:23)
4个回答

57

我也遇到了这个问题。不确定是什么原因,但删除我的node_modules文件夹并再次运行“npm install”解决了我的问题。


运行正常!在 package.json 文件中修改名称后出现了问题。 - Yury Kozlov

36

这件事发生时是不是恰巧是星期一?如果是的话,我认为它与这个问题有关: https://github.com/webpack/webpack-cli/issues/962

据我所知,Laravel Mix使用的Webpack CLI尝试每六天打印一次消息,询问用户是否考虑捐赠。但是,最近的版本依赖于Windows中不可用的功能。最初添加该逻辑是为了考虑那些被不断看到该消息而烦恼的人,后来对其进行了调整,以避免Mac和Linux用户出现文件权限问题,但后来这个变化只会在星期一给Windows用户带来问题。

该主题中rseeburg用户提出了一个解决方案,即将有问题的代码包装在try / catch中。然而,根据Webpack CLI 3.3.5的发布说明,似乎已经删除了捐赠消息,因此更新包应该可以解决问题。我通过在package.json中添加"webpack-cli": "^3.3.5",然后运行yarn install,让它再次正常运行。


这似乎是完美的解决方案,我将其标记为答案。 - kelvin
我正在运行 webpack-cli v3.3.9,并且刚刚遇到了这个问题。我将系统时钟设置为星期二,目前问题已经解决。 - doublea

0

对我来说,只需运行npm install就解决了问题。不需要删除任何文件夹。


0
你可以做三件事来解决这个问题:
1- 把日期改为除了星期一以外的任何一天,因为这个函数只在星期一运行。
2- 检查你的代码是否有语法错误或逻辑错误。
3- 确保你的程序使用的是最新版本的库和框架。
 const now = new Date();
if (now.getDay() === MONDAY) {
    const { access, constants, statSync, utimesSync } = require("fs");
    const lastPrint = statSync(openCollectivePath).atime;
    const lastPrintTS = new Date(lastPrint).getTime();
    const timeSinceLastPrint = now.getTime() - lastPrintTS;
    if (timeSinceLastPrint > SIX_DAYS) {
        require(openCollectivePath);
        // On windows we need to manually update the atime
        access(openCollectivePath, constants.W_OK, e => {
            if (!e) utimesSync(openCollectivePath, now, now);
        });
    }
}

关于捐赠他们的软件包

2- 删除这个条件 fileOwnerId === process.getuid()),但对于Windows用户不起作用,所以你可以尝试最后一件事情

3- 在你的package.json中的依赖项中添加"webpack-cli": "^3.3.5"并运行npm,这对我有用。


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