Vercel: Git-те .env файлы болмаса, орта айнымалылары
MarkdownEnvironment Variables, Development/Preview/Production орталарын, жаңа орналастыруды және Next.js ішінде кілттерді браузерге бермей қауіпсіз тексеруді қамтиды.
Мақаланы толық оқу
Негізгі түйін
Құпия деректеріңіз бар .env файлы Git-те болмаса, қажетті айнымалыларды Vercel жобаңыздың Environment Variables бөлімінде қосыңыз. Ортаны таңдап, параметрлерді сақтаңыз да, жаңа орналастыру жасаңыз: бұрын орналастырылған нұсқалар өзгермейді. Next.js ішінде құпия кілтке NEXT_PUBLIC_ префиксін қоспаңыз: құрастыру кезінде оның мәні браузер кодына енгізіледі.
Бұл нұсқаулық Vercel-де орналастырылған жобаға арналған. Оның параметрлеріне қол жеткізуіңіз және қолданба қандай айнымалыларды оқитынын білуіңіз керек. Төмендегі мысал Next.js-ке қатысты; басқа фреймворктың айнымалы атауларын автоматты түрде қолдануға болмайды. Нұсқаулық ресми құжаттамаға негізделген; нақты тіркелгіде тексерілмеген.
Ailoot қызметін пайдалану туралы практикалық ақпарат құжаттамада берілген.
.env файлын Git-ке қосудың қажеті жоқ
Орта айнымалысы — қолданба бастапқы кодтан бөлек алатын, атауы мен мәні бар параметр. Мысалы, SERVICE_API_KEY атауы бағдарламаға сыртқы қызметтің кілт мәніне қол жеткізуге мүмкіндік береді. Кілттің өзін нұсқаулыққа, агентпен әңгімеге немесе репозиторийге енгізбеңіз.
Next.js жергілікті .env* файлдарынан айнымалыларды жүктей алады. Бірақ жергілікті файл мен Vercel-дегі жоба параметрлері — екі бөлек орын. Файл репозиторийге жіберілмесе, мәндерді хостинг платформасында бөлек орнатыңыз. Стандартты create-next-app үлгісі .env файлдарын .gitignore тізіміне қосады; Next.js құжаттамасы оларды репозиторийге мүлде дерлік жібермеу керегін ескертеді.
Бастапқы файлдарда нені сақтауға болатынына әлі де күмәндансаңыз, AI көмегімен жасалған жобаға арналған қауіпсіздік тексерісінен бастаңыз. Мұнда біз нақтырақ сұрақты қарастырамыз: белгілі бір Vercel орналастыруының конфигурациясын қайда орнату керек.
Алдымен қолданба айнымалыны қайдан оқитынын анықтаңыз
Кез келген мәнді енгізбес бұрын, құпиялардың өзін қоспай, атаулардың тізімін жасаңыз. Әр атау бойынша үш нәрсені анықтауыңыз керек: оны қай орта қолданады, айнымалыны оқитын код қайда орындалады және мән қашан қажет болады.
| Нені тексеру керек | Ықтимал нұсқалар | Неліктен маңызды |
|---|---|---|
| Vercel ортасы | Development, Preview, Production | Параметр тексеріп жатқан нұсқаға қолданылуы керек |
| Қай жерде оқылады | Сервер немесе браузер | Жеке кілт клиенттік кодқа енгізілмеуі керек |
| Қашан оқылады | Құрастыру кезінде немесе сервер функциясы орындалғанда | Next.js ішінде ашық мәндер құрастыру кезінде бекітіледі |
Development ортасы жергілікті әзірлеуге арналған. Preview алдын ала қарау орналастыруларына, ал Production негізгі жарияланған нұсқаға арналған. Preview ортасында белгілі бір Git тармағына арналған параметрлер болуы мүмкін: олар атаулары бірдей жалпы Preview параметрлерін басып озады.
Next.js жобасында NEXT_PUBLIC_ префиксі жоқ айнымалылар әдепкіде серверде қолжетімді болады. NEXT_PUBLIC_ префиксі мәнді браузерге жіберілетін JavaScript кодына енгізуге мүмкіндік береді. Бұл құпия емес нұсқа белгісі сияқты әдейі ашық параметрге жарайды, бірақ жеке API кілтіне жарамайды. Бұл префикс болмаса да, қолданба коды құпия мәнді клиентке қолмен қайтармауы керек.
Фреймворкты әлі анықтамаған болсаңыз, агенттен оны жоба файлдары бойынша анықтауды сұраңыз. Astro мен Next.js салыстыруы айырмашылықтарын түсінуге көмектеседі; NEXT_PUBLIC_ ережесін барлық React қолданбасына қолдануға болмайды.
Хостинг конфигурациясы — AI агентімен қолданбада жұмыс істеуге қатысты тапсырмалардың бірі.
Vercel жобасына айнымалыны қалай қосу керек
Ресми бақылау тақтасындағы қадамдарды өзіңіз орындаңыз. Форманы толтыру үшін агентке нақты кілтті бермеңіз және оның мәні көрінетін скриншотты тіркемеңіз.
- Vercel бақылау тақтасын ашып, дұрыс жобаны таңдаңыз. Репозиторий атауы сәйкес келетініне ғана сүйенбеңіз: ашуды көздеген қолданбаңызды конфигурациялап жатқаныңызды тексеріңіз.
- Жоба параметрлерінің бүйірлік мәзірінен Environment Variables бөліміне өтіңіз.
- Name өрісіне қолданба оқитын атауды енгізіңіз, мысалы,
SERVICE_API_KEY. Бұл — үлгі атауы; код басқа атауды күтсе, оның дәл жазылуын қолданыңыз. - Value өрісіне тіркелгі деректерін сақтайтын жердегі мәнді енгізіңіз. Оны бастапқы кодқа, чатқа немесе тексеру журналына енгізбеңіз.
- Бұл параметр қажет ортаны таңдаңыз. Алдын ала қарау нұсқасын тексеру үшін Preview, негізгі нұсқа үшін Production таңдаңыз. Бір құпияны барлық ортаға автоматты түрде тағайындамаңыз.
- Preview параметрі белгілі бір тармаққа қатысты болса, таңдалған тармақты және атауы бірдей кез келген қайта анықтауды тексеріңіз.
- Save түймесін басыңыз.
Vercel жоба айнымалыларын құрастыру кезінде де, серверде Vercel Functions орындалғанда да қолжетімді етеді. Алайда мәннің Vercel ішінде қолжетімді болуы оны браузерге жіберуге болады дегенді білдірмейді: бұл қолданба кодына және фреймворк ережелеріне байланысты.
Save түймесін басқаннан кейін жаңа орналастыру неге қажет
Айнымалыны сақтау бұрыннан бар орналастыруларды өзгертпейді. Vercel құжаттамасына сәйкес, жаңа параметр сіз қолданатын нұсқаға жетуі үшін жобаны қайта орналастыру керек.
Git арқылы жұмыс істегенде, Production Branch ішінде көрсетілген тармаққа коммит жіберіп, жаңа Production орналастыруын жасай аласыз; басқа тармаққа жіберсеңіз, Preview орналастыруы жасалады. Негізгі тармақ әрқашан main деп ойламаңыз: жобаңыздың параметрін тексеріңіз. Бұл құпия файлды коммитке қоспай орындалатын, келісілген қалыпты жоба шығарылымы болуы керек.
Орналастыруды бастағаннан кейін құрастыру аяқталғанша күтіп, жаңа орналастырудың URL мекенжайын ашыңыз. Оның URL мекенжайын, ортасын және тармағын жазып алыңыз. Жеке орналастырудың ескі URL мекенжайын тексерсеңіз, жаңа параметрлер ол жерде көрінбейді.
Next.js үшін тағы бір шарт бар: process.env.NEXT_PUBLIC_RELEASE_LABEL сияқты сілтемелер next build кезінде мәндерімен алмастырылады. Мән құрастырудан кейін бекітіледі. Жаңа құрастырусыз параметрді өзгерту бұрын жеткізілген клиенттік JavaScript кодын қайта жазбайды.
Кілтті ашпай нәтижені қалай тексеруге болады
Қауіпсіз мысалдан бастаңыз: NEXT_PUBLIC_RELEASE_LABEL деп аталатын және preview-check мәні берілген, құпия емес белгі. Бұл — мысал атауы мен мәтіні; кілт те, мұнда орындалған сынақ та емес. Егер Next.js қолданбасы бұл айнымалыны process.env.NEXT_PUBLIC_RELEASE_LABEL арқылы тікелей оқыса, жаңа құрастырудан кейін белгіні интерфейстің көзделген жерінде көрсете алады. Бұл тек ашық параметрдің берілгенін растайды.
Жеке кілтті басқаша тексереді. Оның мәнін, бір бөлігін, ұзындығын немесе бүкіл process.env мазмұнын шығармаңыз. Айнымалы мазмұнын қайтаратын ашық URL жасамаңыз. Алдымен серверде параметрдің тек «бар / жоқ» екенін тексеріңіз, содан кейін қызметті пайдаланатын қолданба функциясын бөлек тексеріңіз. Параметрдің бар болуы кілттің жарамды екенін немесе қажетті рұқсаттары бар екенін дәлелдемейді.
Нәтижелерді құпия деректерсіз тіркей аласыз:
- жоба, орта және тармақ конфигурация кезінде таңдалған мәндерге сәйкес келеді;
- айнымалыны сақтағаннан кейін жасалған жаңа орналастырудың URL мекенжайын тексеріп жатырсыз;
- құрастыру аяқталды және қажетті қолданба функциясы қауіпсіз сынақ деректерімен орындалды;
- құпия мән браузерде, API жауаптарында, журналдарда немесе әңгімелерде ашылмайды.
Егер функция төлем жасаса, хабарлама жіберсе немесе салдары бар басқа әрекет орындаса, қызметтің арнайы сынақ режимін қолданыңыз. Конфигурацияны тексеру өздігінен нақты операция жасауға рұқсат бермейді.
Мән әлі де undefined болса, нені тексеру керек
undefined дегеніміз — қол жеткізудің сол нүктесінде ешқандай мән алынбағанын білдіреді. Барлық параметрді бірден өзгертпей, атауды, ортаны және нұсқаны ретімен тексеріңіз.
| Белгі | Нені тексеру керек |
|---|---|
| Жергілікті жерде жұмыс істейді, бірақ Preview-де істемейді | Атаудың жоба параметрлеріндегі Preview ортасында бар-жоғын; басқа тармақ таңдалған-таңдалмағанын |
| Preview жұмыс істейді, бірақ Production істемейді | Атаудың Production үшін орнатылған-орнатылмағанын; Save түймесін басқаннан кейін жаңа негізгі нұсқа жасалған-жасалмағанын |
| Preview тармақтарының біреуі басқаша әрекет етеді | Атауы бірдей мән сол тармаққа орнатылып, жалпы параметрді басып оза ма |
| Сервер айнымалыны көреді, бірақ браузер көрмейді | Next.js ішінде бұл ашық емес айнымалы үшін күтілетін жағдай; жеке кілтті браузерге көшірмеңіз |
| Ашық Next.js белгісінде әлі де ескі мән тұр | Қажетті мәнмен жаңа құрастыру жасалған-жасалмағанын; ашылған URL сол орналастыруға тиесілі-тиесілігін |
| Ашық атау дұрыс, бірақ алмастыру жұмыс істемейді | Код оны process.env[varName] арқылы динамикалық оқи ма: Next.js мұндай сілтемелерді кірістірмейді |
Атау, орта және жаңа нұсқаны тексергеннен кейін де функция қатесі айнымалының себеп болғанын дәлелдемейді. Құпия деректері бар диагностикалық мәліметтерді жарияламай, сервер жағындағы нақты код қатесін зерттеңіз. Бұл нұсқаулық барлық HTTP 500 жауабын шешуге кепілдік бермейді.
Өз серверіңізге көшу үшін басқа рәсім қажет: Coolify арқылы жобаны орналастыру нұсқаулығын қараңыз. Vercel түймелерінің атаулары мен конфигурация қадамдары оған қолданылмайды.
Дереккөздер
Толығырақ
Жиі қойылатын сұрақтар
Vercel-де сақтасам да, айнымалы неге undefined болып қалады?
Жобаны, ортаны және тармаққа тән ауқымды тексеріп, кейін жаңа орналастыру жасаңыз. Жаңа баптауды сақтаудың өзі бұрынғы орналастыруларға айнымалы қоспайды.
Next.js қолданбама құпия көрінуі үшін NEXT_PUBLIC_ қоса аламын ба?
Құпия үшін бұл префиксті қолданбаңыз: ол мәнді құрастыру кезінде браузер кодына енгізеді. Құпияны серверде сақтап, кілтті шығармай бар екенін тексеріңіз.