【问题标题】:Webpack not finding fileWebpack 找不到文件
【发布时间】:2020-05-20 18:16:25
【问题描述】:

我最近正在关注一个关于在 Django 中使用 webpack 的教程,而对于我来说,本地主机就是找不到我的包文件

这是我在本地主机上检查时控制台显示的内容:

GET http://127.0.0.1:8000/static/bundles/bundle.js net::ERR_ABORTED 404 (Not Found)

但我的项目根目录中有一个名为 static 的目录,里面有一个 bundles 目录,还有一个 bundle.js 文件。我不明白为什么本地主机找不到我的文件

这是我的树的一部分:

├── static
│   └── bundles
│       └── bundle.js
├── templates
│   ├── base.html
│   ├── components
│   │   ├── game
│   │   │   └── game.html
│   │   └── lobby
│   │       ├── LobbyBase.jsx
│   │       ├── index.jsx
│   │       └── lobby.html
│   ├── home.html
│   ├── login.html
│   └── register.html
├── webpack-stats.json
└── webpack.config.js

如您所见,里面有一个静态文件、一个包文件,以及里面的 bundle.js。这是我的 Django 设置代码:

STATIC_URL = '/static/'

WEBPACK_LOADER = {
    'DEFAULT': {
        'BUNDLE_DIR_NAME': 'bundles/',
        'STATS_FILE': os.path.join(BASE_DIR, 'webpack-stats.json'),
    },
}

任何帮助将不胜感激!非常感谢

编辑:跟进:删除 STATIC_URL 也无济于事。认为这可能会导致问题,但似乎并非如此

【问题讨论】:

  • 您需要同时配置 STATIC_URL(所有静态文件都可以通过 web 引用的 URL)和 STATIC_ROOT(所有静态文件将被物理定位的文件夹) - Django 将一个映射到另一个以使静态文件工作。 STATICFILES_DIRS 是可选目录的列表,在collectstatic 命令执行期间必须将文件从其中复制到 STATIC_ROOT;在 DEBUG=true 时也会搜索这些目录(因此可以在没有 collectstatic 的情况下访问文件)。
  • 感谢您的评论!我对此很陌生-我可以像在staticfiles_dir中那样在setting.py中设置static_root吗?谢谢!
  • 是的,这是正确的地方。

标签: django webpack django-webpack-loader


【解决方案1】:

我仍然不知道为什么这会解决问题,但这是我为解决问题所做的:

将此添加到设置中:


STATICFILES_DIRS = [
    os.path.join(BASE_DIR, "static"),
]

神奇地本地主机可以找到该文件。如果有人能解释为什么会发生这种情况,那就太棒了,希望这可以为遇到类似问题的其他人节省一些时间!

【讨论】:

  • 不,你应该配置STATIC_ROOTcollectstatic 会将所有来自STATICFILES_DIRS 的静态文件收集到STATIC_ROOT 中。 STATICFILES_DIRS附加源目录 用于填充 STATIC_ROOT - 将在 prod 上用作静态文件位置。目前您的项目中没有配置静态文件物理位置 (STATIC_ROOT)。
猜你喜欢
  • 2016-12-18
  • 2019-02-01
  • 2021-08-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-03-07
  • 2017-06-07
  • 2018-01-15
相关资源
最近更新 更多