我在跟踪
this tutorial
设置Django以使用webpack生成的捆绑包提供模板。我已经像教程中一样设置了它。但问题是我什么时候去
localhost:8000
我明白了
Uncaught SyntaxError: Unexpected token <
在chrome devtools中打开控制台时出现异常。除了reactjs包之外,我放在模板文件中的其他html都会呈现出来。我的文件夹结构如下:
.
âââ djangoapp
â  âââ db.sqlite3
â  âââ djangoapp
â  â  âââ __init__.py
â  â  âââ settings.py
â  â  âââ urls.py
â  â  âââ wsgi.py
â  âââ manage.py
â  âââ reactapp
â  â  âââ static
â  â  âââ bundles
â  â  â  âââ main-fdf4c969af981093661f.js
â  â  âââ js
â  â  âââ index.jsx
â  âââ requirements.txt
â  âââ templates
â  â  âââ index.html
â  âââ webpack-stats.json
âââ package.json
âââ package-lock.json
âââ webpack.config.js
设置。py公司
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'webpack_loader'
]
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [os.path.join(BASE_DIR, "templates"), ],
'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',
],
},
},
]
WEBPACK_LOADER = {
'DEFAULT': {
'BUNDLE_DIR_NAME': 'bundles/',
'STATS_FILE': os.path.join(BASE_DIR, 'webpack-stats.json'),
}
}
STATIC_URL = 'static/'
网页包。配置。js公司
var path = require("path");
var webpack = require('webpack');
var BundleTracker = require('webpack-bundle-tracker');
module.exports = {
context: __dirname,
entry: './djangoapp/reactapp/static/js/index.jsx',
output: {
path: path.resolve('./djangoapp/reactapp/static/bundles/'),
filename: "[name]-[hash].js",
},
plugins: [
new BundleTracker({filename: './djangoapp/webpack-stats.json'}),
],
module: {
rules: [
{ test: /\.js$/, use: ['babel-loader'], exclude: /node_modules/},
{ test: /\.jsx$/, use: ['babel-loader'], exclude: /node_modules/}
]
},
resolve: {
modules: ['node_modules', 'bower_components'],
extensions: ['.js', '.jsx']
},
};
模板/索引。html
{% load render_bundle from webpack_loader %}
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Example</title>
</head>
<body>
<div id="react"></div>
{% render_bundle 'main' %}
</body>
</html>
。巴别塔LRC
{
"presets": ["babel-preset-env", "react"]
}
异常在
main-fdf4c969af981093661f.js
文件,位于的开始标记上
<!DOCTYPE html>
要素我的猜测是,浏览器需要javascript代码,但它需要html。此外,我不明白Django如何知道在哪里查找捆绑包,因为我没有指定根(
reactapp
目录)的
static/bundles
在任何地方