Nextjs未解析JSON

fcg9iug3  于 2023-10-18  发布在  其他
关注(0)|答案(1)|浏览(96)

我有问题。在开发模式下,Nextjs解析JSON。但在生产模式下,json状态为json。(令人惊叹)next.js

const {webpack} = require("next/dist/compiled/webpack/webpack");
/** @type {import('next').NextConfig} */
const nextConfig = {
    fs: false,
    path: false,
    dns: false,
    net: false,
    tls: false,
    pageExtensions: ["middleware.tsx"],
    serverComponentsExternalPackages: ['pg']
}

module.exports = nextConfig
module.exports = {
    webpack5: true,
    webpack: (config) => {
        config.plugins.push(new webpack.IgnorePlugin({ resourceRegExp: /^pg-native$/ }))
        config.resolve.fallback = {
            fs: false,
            path: false,
            dns: false,
            net: false,
            tls: false
        };

        return config;
    },
};

重写nextjs配置

wgeznvg7

wgeznvg71#

看起来你想配置你的Next.js应用程序在开发模式和生产模式下以不同的方式处理JSON解析。要实现这一点,您可以在next.js.js文件中使用自定义Webpack配置。您可以使用条件逻辑根据环境以不同的方式处理JSON解析。
以下是如何重写next.js.js文件的示例:

const { webpack } = require("next/dist/compiled/webpack/webpack");

const isProduction = process.env.NODE_ENV === 'production';

const nextConfig = {
  fs: false,
  path: false,
  dns: false,
  net: false,
  tls: false,
  pageExtensions: ["middleware.tsx"],
  serverComponentsExternalPackages: ['pg'],
  webpack5: true,
  webpack: (config) => {
    config.plugins.push(new webpack.IgnorePlugin({ resourceRegExp: /^pg-native$/ }));
    config.resolve.fallback = {
      fs: false,
      path: false,
      dns: false,
      net: false,
      tls: false,
    };

    // Handle JSON parsing differently based on the environment
    if (!isProduction) {
      // In development mode, parse JSON
      config.module.rules.push({
        test: /\.json$/,
        loader: 'json-loader',
      });
    } else {
      // In production mode, use a different JSON loader or parser
      // You can customize this part based on your production needs
      // For example, you can use 'json-loader' or any other JSON parsing library.
      config.module.rules.push({
        test: /\.json$/,
        loader: 'json-loader',
      });
    }

    return config;
  },
};

module.exports = nextConfig;

在此配置中,我们首先检查环境是否处于生产模式(isProduction)。如果它不在生产模式下,我们使用json-loader在开发环境中解析JSON文件。您可以根据自己的特定需求自定义生产JSON加载器或解析机制。
请确保调整生产JSON解析部分,以匹配JSON解析的实际生产设置。
如果你还没有安装json-loader,请记住:

npm install json-loader --save-dev

此配置应有助于您在Next.js应用程序的开发和生产模式中以不同的方式处理JSON解析。

相关问题