Не удается разрешить 'fs' в следующем js с пользовательским express сервером - PullRequest
0 голосов
/ 02 апреля 2020

Я добавил fs в свой следующий js проект и получил следующую ошибку:

Модуль не найден: Не удается разрешить 'fs' в '/ Users / neven / Development / next- js / node_modules / dotenv / lib '

Я обнаружил, что для решения этой проблемы я должен добавить config.node = {fs:' empty '} к моему следующему .config . js файл. Проблема в том, что когда я добавляю этот параметр конфигурации, плагин dotenv перестает работать, то есть переменные env не загружаются на стороне клиента.

Это мой файл next.config. js, который работает без проблем. .

const withCSS = require('@zeit/next-css')
const dotenv = require('dotenv')
const path = require('path')
const Dotenv = require('dotenv-webpack')

dotenv.config()

module.exports = withCSS({
  webpack: config => {
    config.plugins = config.plugins || []

    config.plugins = [
      ...config.plugins,

      // Read the .env file
      new Dotenv({
        path: path.join(__dirname, '.env'),
        systemvars: true,
      }),
    ]

    return config
  },
})

А потом, когда я добавляю fs: 'empty' , это выглядит так:

const withCSS = require('@zeit/next-css')
const dotenv = require('dotenv')
const path = require('path')
const Dotenv = require('dotenv-webpack')

dotenv.config()

module.exports = withCSS({
  webpack: config => {
    config.plugins = config.plugins || []

    config.node = {
      fs: 'empty'
    }

    config.plugins = [
      ...config.plugins,

      // Read the .env file
      new Dotenv({
        path: path.join(__dirname, '.env'),
        systemvars: true,
      }),
    ]

    return config
  },
})

У вас есть какие-либо предложения о том, как я мог решить эту проблему?

Дайте мне знать, если понадобятся дополнительные детали.

1 Ответ

0 голосов
/ 02 апреля 2020

Я выяснил, в чем проблема; Плагин dotenv работает правильно, но я пытался получить переменные на стороне клиента, и это невозможно.

Решение использовать переменные env на стороне клиента состоит в добавлении env: {ПРИМЕР: 'helloWorld'} to next.config. js file.

const withCSS = require('@zeit/next-css')
const dotenv = require('dotenv')
const path = require('path')
const Dotenv = require('dotenv-webpack')

dotenv.config()

module.exports = withCSS({
  env: { EXAMPLE: 'helloWorld' },
  webpack: config => {
    config.plugins = config.plugins || []

    config.node = {
      fs: 'empty'
    }

    config.plugins = [
      ...config.plugins,

      // Read the .env file
      new Dotenv({
        path: path.join(__dirname, '.env'),
        systemvars: true,
      }),
    ]

    return config
  },
})
...