Как решить "TypeError: process.getuid не является функцией"

Я запускаю response.js с laravel и наблюдаю за изменениями с помощью yarn yarn run watch которая работала нормально, пока я не начал сталкиваться с этой ошибкой в веб-пакете всякий раз, когда я использовал yarn или npm после того, как сделал несколько обновлений для Windows 10 (я действительно не знаю если бы это могло быть причиной) - я хотел бы любую помощь.

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)

Ответ 1

Был ли это случайно понедельник, когда это случилось? Если это так, я считаю, что это связано с этой проблемой: https://github.com/webpack/webpack-cli/issues/962

Исходя из того, что я понял, Webpack CLI, который использует Laravel Mix, пытается печатать сообщение раз в шесть дней, в котором пользователю предлагается рассмотреть возможность пожертвования, но в последних версиях использовалась функция, недоступная в Windows. Изначально логика была добавлена в качестве соображения для людей, которым надоело постоянно видеть сообщение, а затем доработана, чтобы избежать проблем с правами доступа к файлам для пользователей Mac и Linux, но последнее изменение вызвало проблемы для пользователей Windows только по понедельникам.

Решение, предложенное пользователем rseeburg в этом потоке, заключалось в том, чтобы просто обернуть нарушающий код в try/catch. Однако, похоже, что сообщение о пожертвовании было удалено с CLI 3.3.5 Webpack, поэтому обновление пакета должно исправить это. Я снова "webpack-cli": "^3.3.5" добавив "webpack-cli": "^3.3.5" в package.json с последующей yarn install "webpack-cli": "^3.3.5".

Ответ 2

У меня просто была эта проблема. Я не уверен, что вызвало это, но удаление моей папки node_modules и повторный запуск "npm install" исправили это для меня.

Ответ 3

Вы можете сделать 3 вещи, чтобы исправить это:

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 который работает для меня.

Ответ 4

Спасибо, ребята... У меня была та же проблема @Win10 и я исправил ее, изменив версию webpack-cli в package.json, а затем обновив через npm install

Это работало хорошо для меня