异常值:字符串索引必须是整数:渲染包错误 vue + django

Posted

技术标签:

【中文标题】异常值:字符串索引必须是整数:渲染包错误 vue + django【英文标题】:Exception Value: string indices must be integers : Render bundle error vue + django 【发布时间】:2020-07-22 08:26:36 【问题描述】:

我使用 webpack loader 将我的 vue 应用程序注入 django,代码如下:

设置:

WEBPACK_LOADER = 
'DEFAULT':
    'BUNDLE_DIR_NAME':'/',
    'STATS_FILE':os.path.join(BASE_DIR,'aptim-frontend/dist','webpack-stats.json')


vue 配置文件:

const BundleTracker = require("webpack-bundle-tracker"); 
module.exports = 
  // on Windows you might want to set publicPath: "http://127.0.0.1:8080/"
  publicPath: "http://0.0.0.0:8080/",
  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("http://0.0.0.0:8080")
  .host("0.0.0.0")
  .port(8080)
  .hotOnly(true)
  .watchOptions( poll: 1000 )
  .https(false)
  .headers( "Access-Control-Allow-Origin": ["*"] );,;

我得到错误的 html 行位于索引 html

 % render_bundle 'app' %

错误:异常值:字符串索引必须是整数

【问题讨论】:

官方 github 问题在这里:github.com/owais/django-webpack-loader/issues/227 【参考方案1】:

我在很棒的 Udemy 课程 The Complete Guide to Django REST Framework and Vue JS 中遇到了同样的问题。如果您没有订阅,您可能无法阅读 Michele Saba 的答案。

这可能与软件包版本有关,它们是 alpha。降级到

webpack-bundle-tracker@0.4.3 django-webpack-loader==0.7.0

为我工作。降级使用:

npm install --save-dev webpack-bundle-tracker@0.4.3

【讨论】:

解决了Django 3.1.5django-webpack-loader 0.7.0的问题 解决了 Django 3.2.7 的问题【参考方案2】:

按照@Frans 的说法降级 Webpack-bundle-tracker

npm install --save-dev webpack-bundle-tracker@0.4.3

vue.config.js

config
    .plugin('BundleTracker')
    .use(BundleTracker, [filename: './webpack-stats.json'])

然后用旧的webpack-stats.json删除dist文件夹

在这个版本和这个配置中webpack-stats.json文件是在frontend而不是frontend/dist中生成的 所以你必须把STATS_FILE改成settings.py (例如如果你的 Vue 项目是frontend

'STATS_FILE': os.path.join(BASE_DIR, 'frontend','webpack-stats.json'),

然后重新启动 Vue 和 Django 网络服务器。

【讨论】:

【参考方案3】:

异常值:字符串索引必须是整数

我也遇到了这个奇怪的错误,确认降级到 webpack-bundle-tracker@0.4.3 可以工作。

【讨论】:

【参考方案4】:

同样的问题。下面的配置对我有用

webpack-bundle-tracker@0.4.3 django-webpack-loader==0.6.0

【讨论】:

以上是关于异常值:字符串索引必须是整数:渲染包错误 vue + django的主要内容,如果未能解决你的问题,请参考以下文章

解析github api ..获取字符串索引必须是整数错误

为啥在尝试从 api 获取数据时出现此错误“TypeError:字符串索引必须是整数”?

类型错误:发出 REST API 请求时,字符串索引必须是整数

字符串索引必须是整数 json 文件

在 Python 中读取 JSON 字符串:接收错误“TypeError:字符串索引必须是整数”

TypeError:字符串索引必须是整数 Python 2