설치가 다 끝나고 나는 에러
Failed to load components: Component bundle not loaded. Expected global variable: SirsoftAdminBasic. Ensure admin.blade.php includes the IIFE bundle script.
답변 2개 / 댓글 4개
안녕하세요. 답변이 늦은점 양해 말씀 드립니다.
문의해주신 내용과 이전에 올려주신 글 ( https://sir.kr/questions/564165 ) 을 참고한 바로는 nginx 프록시 관련 문제로 보입니다.
그누보드7은 템플릿의 JS/CSS 등 정적 파일을 웹서버가 직접 서빙하지 않고, Laravel API를 통해 서빙하는 구조입니다. 예를 들어, 브라우저가 /api/templates/assets/sirsoft-admin_basic/js/components.iife.js 경로에 접근하면, Laravel이 요청을 받아서 templates/sirsoft-admin_basic/dist/js/components.iife.js 파일을 찾아 응답하는 구조입니다.
현재 구성이 nginx(443) -> 프록시 -> php-fpm(8080) 구조이므로, 443 server 블록에서 /api/ 경로도 백엔드로 프록시되어야 합니다. 하지만 nginx에 정적 파일 확장자(.js, .css, .json 등)를 직접 처리하는 location 블록이 있거나, try_files에서 파일을 찾지 못해 404를 반환하는 경우 이 에러가 발생하는 것으로 보입니다.
443 server 블록에서, 이전에 SSE 해결을 위해 /install/api/ location을 추가하셨던 것처럼, /api/ 경로 전용 location 블록을 추가합니다.
예시:
server {
listen 443 ssl;
# ... SSL 설정 ...
# 설치 SSE 대응 (이미 추가하신 블록)
location ^~ /install/api/ {
proxy_pass http://127.0.0.1:8080;
proxy_set_header Host $host;
proxy_buffering off;
proxy_read_timeout 600s;
}
# (추가) 그누보드7 API 경로
# URL이 .js, .css, .json 등으로 끝나더라도 nginx가 직접 처리하면 안 됩니다.
# 그누보드7은 이 경로를 통해 템플릿/모듈/플러그인 에셋을 서빙합니다.
location /api/ {
proxy_pass http://127.0.0.1:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
# 나머지 요청
location / {
proxy_pass http://127.0.0.1:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
그리고 8080 server 블록에서는 아래와 같이 try_files가 정확히 설정되어 있는지 확인합니다:
예시:
server {
listen 8080;
root /var/www/g7/public; # ← 그누보드7 설치 경로의 public 디렉토리
index index.php;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ \.php$ {
fastcgi_pass unix:/run/php/php8.4-fpm.sock;
fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
include fastcgi_params;
fastcgi_buffering off; # SSE 지원용 (이미 추가하신 항목)
}
}
추가로 아래 부분도 확인 부탁드립니다.
예를 들어, 아래와 같은 정적 파일 전용 location 블록이 있는 경우 작동이 되지 않을 수 있습니다.
# 이런 설정이 있으면 그누보드7 서빙이 작동하지 않음
location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg|woff|woff2)$ {
add_header Access-Control-Allow-Origin "*";
expires max;
access_log off;
}
정적 파일 캐싱이 필요하다면 /build/ 경로에만 적용 부탁드립니다.
location /build/ {
expires max;
add_header Cache-Control "public, immutable";
}
추가로, Varnish를 사용 중이시라면 nginx 설정 변경 후 Varnish 캐시 초기화도 함께 해주시기 바랍니다.
(이전 에러 응답이 캐싱되어 있을 수 있습니다)
만약, 위 내용으로 조치가 어렵다면 오류가 발생하는 상태에서 nginx.conf 전문을 올려주시면 해당 기준으로 저희가 다시 한번 점검해보겠습니다.
감사합니다.
답변에 대한 댓글 1개
안녕하세요. 번거로우시겠지만, 아래를 확인해주실수 있을까요?
<브라우저>
1. 브라우저에서 개발자도구 (Ctrl+Shift+I) 실행 후 에러가 발생하는 화면에서 새로고침
2. 네트워크 탭에서 /api/templates/assets/sirsoft-admin_basic/js/components.iife.js 요청의 응답 코드 확인 부탁드립니다.
(422인지, 404 인지, 500인지, 200 인지 등)
3. 응답 내용은 어떤 형태인지 확인 부탁드립니다. (내용이 비어 있는지 컴포넌트 컴파일 코드가 포함되어 있는지)
<터미널>
※ 그누보드7 설치 디렉토리에서 확인 부탁드립니다.
$ ls -al templates/sirsoft-admin_basic/dist/js/components.iife.js 했을 경우 해당 파일이 존재하는지
-> 존재하지 않는다면 템플릿 설치에 실패한 것으로 아래 명령 실행 부탁드립니다
$ php artisan template:uninstall sirsoft-admin_basic
$ php artisan template:install sirsoft-admin_basic && php artisan template:activate sirsoft-admin_basic
전달해주시면 저희 쪽에서 분석해보겠습니다.
감사합니다.
답변에 대한 댓글 3개
https://inyourtalk.com 에서 바로 확인이 가능합니다.
그리고, components.iife.js 파일이 존재합니다.
이번에는 Failed to load components: Failed to fetch manifest: 404 이렇게 에러가 뜨네요;
$ php artisan template:uninstall sirsoft-admin_basic
$ php artisan template:install sirsoft-admin_basic && php artisan template:activate sirsoft-admin_basic
위 부분을 다시 적용해 봤는데, 상황은 똑같습니다.
Failed to load components: Component bundle not loaded. Expected global variable: SirsoftAdminBasic. Ensure admin.blade.php includes the IIFE bundle script.
DB에는 90개의 테이블이 생성이 되어 있습니다. 그리고 nginx+php-fpm, php8.4 버전을 사용하고 있습니다.
https://inyourtalk.com 에서 확인 가능합니다. 하루 정도는 작업없이 홈페이지 유지해 놓겠습니다.
답변을 작성하려면 로그인이 필요합니다.
염치불구하고 내용이 길어 질문하기 새글로 등록을 했습니다.
https://sir.kr/questions/564296