@mrFlyer

Как победить ошибку «ReferenceError: process is not defined» на продакшене?

Есть SSR приложение на NuxtJS. Используется плагин "@nuxtjs/dotenv".

Использую его в nuxt.config.js:
require('dotenv').config(".env");
/* ---*/
axios: {
        baseURL: process.env.baseUrl,
    },
/* ---*/


На локальной машине все работает отлично. А на боевом сервере вываливается ошибка "ReferenceError: process is not defined" как при серверном рендеринге, так и клиентском.

Все пакеты установлены как локально, так и на сервере. Приложение запускаю аналогично:
npm i
npm run build
npm run start

Не могу понять как выловить данную ошибку? Заранее спасибо за помощь!

Весь конфиг:
const process = require('process');
require('dotenv').config(".env");

module.exports = {
    head: {
        title: 'Заголовок сайта',
        meta: [
            { charset: 'utf-8' },
            { name: 'viewport', content: 'width=device-width, initial-scale=1' },
            { hid: 'description', name: 'description', content: 'Nuxt.js project' }
        ],
        link: [
            { rel: 'icon', type: 'image/x-icon', href: '/favicon.ico' },
            { rel:'Roboto', href:'https://fonts.googleapis.com/css?family=Roboto:400,700&subset=cyrillic'}
        ]
    },
    css: [
        '@fortawesome/fontawesome-svg-core/styles.css',
        'swiper/dist/css/swiper.css'
    ],
    /*
    ** Customize the progress bar color
    */
    loading: { color: '#3B8070' },
    plugins: [
        '@/plugins/global.js',
        '@/plugins/font-awesome.js',
        '@/plugins/axios.js',
        '@/plugins/notifier.js',
        '@/plugins/vee-validate.js',
        {src: '@/plugins/swiper.js',        ssr: false},
        {src: '@/plugins/localStorage.js',  ssr: false},
        {src: '@/plugins/datepicker.js',    ssr: false},
    ],
    modules: [
        '@nuxtjs/style-resources',
        '@nuxtjs/router',
        '@nuxtjs/axios',
        '@nuxtjs/toast',
        ['@nuxtjs/dotenv', { systemvars: true }]
    ],
    styleResources: {
        sass: ['@assets/css/app.scss'],
    },
    toast: {
        position: 'top-right',
        duration: 3500,
    },
    axios: {
        baseURL: process.env.baseUrl,
        credentials : true,
        requestInterceptor: (config, {store}) => {
            config.headers.common['Authorization'] = '';
            config.headers.common['Content-Type'] = 'application/x-www-form-urlencoded;application/json';
            return config
        }
    },
    /*
    ** Build configuration
    */
    build: {
        /*
        ** Run ESLint on save
        */
        extend (config, { isDev, isClient }) {
            if (isDev && isClient) {
                config.module.rules.push({
                    enforce: 'pre',
                    test: /\.(js|vue)$/,
                    loader: 'eslint-loader',
                    exclude: /(node_modules)/
                })
            }
        },
        optimization: {
            splitChunks: {
                chunks: 'all',
                automaticNameDelimiter: '.',
                name: true,
                cacheGroups: {},
                minSize: 100000,
                maxSize: 250000
            }
        },
        maxChunkSize: 250000,
        extractCSS: true
    },
    dev:{
        extractCSS: true
    }
};
  • Вопрос задан
  • 11779 просмотров
Пригласить эксперта
Ответы на вопрос 2
@grinat
Косяк со сборкой, вероятно в сборку для клиента попадает кусок для node.js либо если используется webpack define plugin, то там не прописаны значения в конфиге для prod версии.
Ответ написан
Vlad_IT
@Vlad_IT Куратор тега JavaScript
Front-end разработчик
Попробуйте вначале добавить
const process = require('process');
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы