如何解决“ TypeError:process.getuid不是函数”

我在laravel上运行react.js并观察了运行正常的更改,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)
老丝Gil2020/04/03 10:51:24

只是跑步npm install 为我解决了。不必删除任何文件夹

Stafan路易2020/04/03 10:51:24

这是星期一偶然发生的吗?如果是这样,我认为与这个问题有关:https : //github.com/webpack/webpack-cli/issues/962

从我收集的数据中,Laravel Mix使用的Webpack CLI尝试每六天打印一次消息,要求用户考虑捐赠,但是最新版本依赖于Windows中不可用的功能。最初添加逻辑是为了让那些不断看到消息困扰的人考虑,后来又进行了调整以避免Mac和Linux用户的文件权限问题,但是后者的更改仅在星期一对Windows用户造成了问题。

用户rseeburg在该线程中提出解决方案只是将有问题的代码包装在try / catch中。但是,似乎捐赠消息从Webpack CLI 3.3.5开始已被删除,因此更新软件包应该对其进行修复。我通过添加"webpack-cli": "^3.3.5"到package.json和其后再次使它工作yarn install

Tom凯2020/04/03 10:51:24

您可以做三件事来解决该问题:

1-将您的日期更改为星期一以外的任何一天,因为如果

 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-将其添加 "webpack-cli": "^3.3.5"到您package.json的依赖项中并npm为我运行

老丝阿飞2020/04/03 10:51:24

我也有这个问题。我不确定是什么原因引起的,但是删除我的node_modules文件夹并重新运行“ npm install”对我来说已经解决了。