UnhandledSchemeError: что это за ошибка node:buffer и как ее решить?
Ниже вставлена ошибка node:buffer, которую я получил при использовании ссылки на локальный маршрут в nextjs. Кто-нибудь знает, как это решить?
Я вижу: https://github.com/vercel/next.js/discussions/33982
Благодарность!
node:buffer Ошибка сборки модуля: UnhandledSchemeError: Чтение из «node:buffer» не обрабатывается плагинами (необработанная схема). Webpack по умолчанию поддерживает URI «data:» и «file:». Вам может понадобиться дополнительный плагин для обработки URI "node:".
3 ответа
Так что у меня тоже была эта проблема - приведенное выше обсуждение связывает вас с типом файла, и именно здесь я действительно в конце концов нашел ответ на этот вопрос.
Во-первых, теперь я использую react-app-rewired — это позволяет мне изменить конфигурацию веб-пакета, не удаляя ваш проект. Это первое, что нужно установить. Есть и другие пакеты, которые также будут делать это, и некоторые люди обеспокоены тем, что этот перемонтированный пакет лишь «слегка» поддерживается сообществом.
Затем вам нужно создать в корне вашего проекта файл с именем «config-overrides.js».
Это то, что у меня есть в моем файле. Он охватывает несколько вещей, кроме node:buffer, потому что мне нужны и другие вещи (например, fs и stream). Я уверен, что вы можете изменить его по мере необходимости:
const webpack = require("webpack");
module.exports = function override(config, env) {
config.resolve.fallback = {
url: require.resolve("url"),
fs: require.resolve("graceful-fs"),
buffer: require.resolve("buffer"),
stream: require.resolve("stream-browserify"),
};
config.plugins.push(
new webpack.ProvidePlugin({
process: "process/browser",
Buffer: ["buffer", "Buffer"],
}),
new webpack.NormalModuleReplacementPlugin(/node:/, (resource) => {
const mod = resource.request.replace(/^node:/, "");
switch (mod) {
case "buffer":
resource.request = "buffer";
break;
case "stream":
resource.request = "readable-stream";
break;
default:
throw new Error(`Not found ${mod}`);
}
}),
);
config.ignoreWarnings = [/Failed to parse source map/];
return config;
};
Вам необходимо убедиться, что пакеты, которые вы используете в этом файле, установлены, например
npm install url graceful-fs buffer stream-browserify --save
После этого я изменил область «скрипты» в моем package.json следующим образом:
"scripts": {
"start": "react-app-rewired start",
"build": "react-app-rewired build",
"eject": "react-scripts eject"
}
Затем мой пакет скомпилировался правильно и работал нормально.
Эта ошибка вызвана ошибкой вnode-fetch
модуль.
Просто понизив его до"node-fetch": "2.6.1"
или любой другой2.x.x
версия исправит эту проблему.
вам необходимо обновить версию узла до 16 или выше. вы можете запустить команду ниже, если вы используете Mac OS.
заварить обновление && узел обновления заварить && npm install -g npm