(修复)Vercel Django部署错误:500:服务器错误,无法导入模块“footer”

x759pob2  于 2023-10-21  发布在  Go
关注(0)|答案(1)|浏览(225)

我已经创建了一个Django项目,我想用它作为我的React项目的后端。在项目的根目录中有两个文件夹:backend用于django,frontends用于react。我还提供了我的项目目录树的截图:screenshot
我添加了requirements.txtvercel.json,下面是两者的代码片段。此外,我已经添加了vercel允许域根据文件。但是,当我通过GitHub在vercel中部署应用程序时,部署过程完成,但当我访问网站时,我得到500 INTERNAL_SERVER_ERROR,进一步说'FUNCTION_INVOCATION_FAQUE'
然后我去vercel并检查打印机,我看到下面的错误打印了多次:

[ERROR] Runtime.ImportModuleError: Unable to import module 'vc__handler__python': No module named 'backend.settings'
Traceback (most recent call last):

所以这个错误可能不是由于requirements.txt中缺少依赖项,而是由于我的项目文件的导入错误。在这种情况下,settings.py。我真的不明白是什么导致导入错误,因为我在vercel.json中给出了wsgi.py的正确路径
requirements.txt

asgiref==3.6.0
Django==4.2
djangorestframework==3.14.0
python-dotenv==1.0.0
pytz==2023.3
sqlparse==0.4.3
tzdata==2023.3

vercel.json

{
    "builds": [{
        "src": "backend/backend/wsgi.py",
        "use": "@vercel/python",
        "config": { "maxLambdaSize": "15mb", "runtime": "python3.9" }
    }],
    "routes": [
        {
            "src": "/(.*)",
            "dest": "backend/backend/wsgi.py"
        }
    ]
}

wsgi.py

import os

from django.core.wsgi import get_wsgi_application

os.environ.setdefault("DJANGO_SETTINGS_MODULE", "backend.settings")

application = get_wsgi_application()

app = application

尝试通过GitHub部署项目,但面临的问题是无法成功部署。

修复我发现:

只是不要为后端和前端创建单独的文件夹,把django文件和react文件放在同一个根文件夹中,并相应地配置它们。我合并了文件夹,并在vercel.json文件中做了一些修改,视图在vercel中可见,没有错误。有关配置的更多信息,您可以查看我的项目实现此配置。GitHub Project Link

qqrboqgw

qqrboqgw1#

对于将来这里的任何人来说,这是由django从后端路径导入模块引起的,而vercel从你的基目录导入所有东西。一个不需要重新组织文件夹就能解决这个问题的方法是在系统路径中添加一个包含后端文件夹的代码片段。
首先,确保更新您的.env文件,将env变量设置为本地的“dev”,并在Vercel中设置为“production”。
然后,在wsgi.py文件中:

if os.environ.get('ENV') == 'production':
    sys.path.append(os.path.dirname(os.path.dirname(__file__)))

相关问题