0

我有一个 Django 项目,它使用 webpack 加载器与 vue 一起使用以下设置

DEFAULT_FILE_STORAGE = 'storages.backends.s3boto3.S3Boto3Storage'
STATICFILES_STORAGE = 'storages.backends.s3boto3.S3StaticStorage'

因此,例如,如果我们<script src="{% static "js/main.js" %}"></script>有 ,Django 会将其转换为,比如说,https://my_service_url.com/static/js/main.js

没关系。

但是麻烦从 webpack 加载器生成的包开始,我有以下设置

WEBPACK_LOADER = {
  'DEFAULT': {
    'CACHE': False,
    'BUNDLE_DIR_NAME': '/bundles/',  # must end with slash
    'STATS_FILE': os.path.join(FRONTEND_DIR, 'webpack-stats.json'),
    'POLL_INTERVAL': 0.1,
    'IGNORE': [r'.+\.hot-update.js', r'.+\.map'],
  }
}

在我的 vue.config.js 文件中

const BundleTracker = require("webpack-bundle-tracker");

const pages = {
    ...
}

    module.exports = {
        publicPath: '/static/',
        outputDir: './dist/',
        chainWebpack: config => {
            config.optimization
                .splitChunks(false)
            config
                .plugin('BundleTracker')
                .use(BundleTracker, [{filename: '../frontend/webpack-stats.json'}])
            config.resolve.alias
                .set('__STATIC__', 'static')
            config.devServer
                .public('/static/')
                .host('0.0.0.0')
                .port(8080)
                .hotOnly(true)
                .watchOptions({poll: 1000})
                .https(false)
                .headers({"Access-Control-Allow-Origin": ["\*"]})
        },
        pages: pages
    };

所以,问题是在这个设置下,Django 尝试使用地址查找包

http://localhost:8006/static/js/my_bundle.js

代替https://my_service_url.com/static/js/my_bundle.js

我如何使这项工作?我想我必须以module.exports某种方式调整...

4

0 回答 0