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

Другие вопросы по тегам