Как решить "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
Это работало хорошо для меня