Heroku меняет base_dir на 'app' в приложении Django & React

У меня есть приложение django/react со структурой файлов

funcon(main directory // django project - contains manage.py)

-funcon (sub directory // django)
-core (sub directory // django)
-funcon-frontend (subdir // react)

Когда я запускаю проект локально, все работает отлично. Проект react - это первое, что я вижу, когда захожу на localhost:8000, и запросы auth работают между ним и api. Когда я разворачиваю проект в heroku, по какой-то причине кажется, что он преобразует мой BASE_DIR в app/funcon-frontend, и я не могу найти, почему он это делает или как это изменить. Я просто пытаюсь развернуть приложение react + django вместе.

Вот журналы сборки из heroku

Frontend build dir: /app/funcon-frontend/build
/app/.heroku/python/lib/python3.11/site-packages/django/core/handlers/base.py:61: 
UserWarning: No directory at: /app/staticfiles/
/app/.heroku/python/lib/python3.11/site-packages/django/core/handlers/base.py:61: 
UserWarning: No directory at: /app/funcon-frontend/build/
mw_instance = middleware(adapted_handler)
app/.heroku/python/lib/python3.11/site-packages/django/core/handlers/base.py:61: 
UserWarning: No directory at: /app/staticfiles/
mw_instance = middleware(adapted_handler)
/app/.heroku/python/lib/python3.11/site-packages/django/core/handlers/base.py:61: 
UserWarning: No directory at: /app/funcon-frontend/build/
mw_instance = middleware(adapted_handler)

Я использую whitenoise (в моем файле requirements.txt)

settings.py


BASE_DIR = Path(__file__).resolve().parent.parent
dotenv_path = os.path.join(BASE_DIR, '.env')
load_dotenv(dotenv_path)

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [os.path.join(BASE_DIR, 'funcon-frontend', 'build')],
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
                'django.template.context_processors.debug',
                'django.template.context_processors.request',
                'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages',
            ],
        },
    },
]

STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles')
STATICFILES_DIRS = []
frontend_static = os.path.join(BASE_DIR, 'funcon-frontend', 'build', 'static')
if os.path.exists(frontend_static):
    STATICFILES_DIRS.append(frontend_static)
    
STATICFILES_STORAGE = 'whitenoise.storage.CompressedManifestStaticFilesStorage'

WHITENOISE_ROOT = os.path.join(BASE_DIR, 'funcon-frontend', 'build')

django_heroku.settings(locals(), staticfiles=False) 

У меня есть package.json в корневой директории, иначе heroku не распознает приложение Nodejs и выходит

    "name": "funcon",
    "version": "1.0.0",
    "scripts": {
      "heroku-postbuild": "echo 'Starting build process' && cd funcon-frontend && echo 'In frontend directory' && npm install && echo 'Dependencies installed' && npm run build && echo 'Build complete' && ls -la"
    },
    "engines": {
      "node": "14.x"
    },
    "cacheDirectories": ["funcon-frontend/node_modules"]
  }

вот мой procfile

web: gunicorn funcon.wsgi --log-file - release: python manage.py migrate

Вернуться на верх