webpackでbuildしたら画面が真っ白。なんとかして表示させたいです。
受付中
回答 2
投稿
- 評価
- クリップ 0
- VIEW 1,546
前提・実現したいこと
■環境
os: windows10
node: 10.16.2
npm: 6.9.0
python: 3.7
Django: 2.2.4
プログラミング初心者です。
現在、Django, vue, vue-cli, webpackでWEBサービスを作ろうとしています。
vueの環境構築をしているのですが、buildしたファイルがどうやってもDOMに反映されません。
■実現したいこと
コンポーネントをDOMに反映させたい。
発生している問題・エラーメッセージ
コンポーネントが反映されずに、画面が真っ白になります。build.js自体は読み込めています。
以下、反映時のchromeで見たelementです。
<body>
↓これが原因だと思われます。
<!--function (a, b, c, d) {return createElement(vm, a, b, c, d, true);}
<script type="text/javascript" src="static/build.js"><script>
該当のソースコード
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="utf-8">
<title>my_app</title>
<link href="https://fonts.googleapis.com/css?family=Roboto:100,300,400,500,700,900" rel="stylesheet">
</head>
<body>
{% load render_bundle from webpack_loader %}
<div id="app">
<app></app>
</div>
{% render_bundle 'main' %}
</body>
</html>
import Vue from 'vue'
import App from './App.vue'
import router from '@/router'
import store from '@/store'
const app = new Vue({
el: '#app',
router,
store,
render: h => h(App)
})
{
"name": "myapp",
"description": "A Vue.js project",
"version": "1.0.0",
"author": "me",
"license": "mit",
"private": true,
"scripts": {
"dev": "webpack --mode development",
"build": "webpack --mode production"
},
"dependencies": {
"@babel/core": "^7.5.5",
"@babel/preset-env": "^7.5.5",
"axios": "^0.19.0",
"fibers": "^4.0.1",
"rollup-plugin-alias": "^1.5.2",
"sass": "^1.22.10",
"style-loader": "^1.0.0",
"vue": "^2.6.10",
"vue-axios": "^2.1.4",
"vue-router": "^3.1.2",
"vuetify": "^2.0.7",
"vuetify-loader": "^1.3.0",
"vuex": "^3.1.1"
},
"browserslist": [
"> 1%",
"last 2 versions",
"not ie <= 8"
],
"devDependencies": {
"babel-core": "^6.26.3",
"babel-loader": "^8.0.6",
"babel-preset-env": "^1.7.0",
"babel-preset-stage-3": "^6.24.1",
"cross-env": "^5.2.0",
"css-loader": "^3.2.0",
"file-loader": "^4.2.0",
"node-sass": "^4.12.0",
"sass-loader": "^7.2.0",
"vue-loader": "^15.7.1",
"vue-template-compiler": "^2.6.10",
"webpack": "^4.39.2",
"webpack-bundle-tracker": "^0.4.2-beta",
"webpack-cli": "^3.3.6",
"webpack-dev-middleware": "^3.7.0",
"webpack-dev-server": "^3.8.0",
"write-file-webpack-plugin": "^4.5.1"
},
"browser": {
"vue": "vue/dist/vue.common.js"
},
"alias": {
"vue": "./node_modules/vue/dist/vue.common.js"
}
}
var path = require('path')
var webpack = require('webpack')
var BundleTracker = require('webpack-bundle-tracker')
var WriteFilePlugin = require('write-file-webpack-plugin')
var VuetifyLoaderPlugin = require('vuetify-loader/lib/plugin')
var VueLoaderPlugin = require('vue-loader/lib/plugin')
module.exports = {
entry: path.resolve(__dirname, './src/main.js'),
output: {
path: path.resolve(__dirname, './dist'),
publicPath: '/static/',
filename: 'build.js'
},
plugins: [
new BundleTracker({filename: 'webpack-stats.json'}),
new WriteFilePlugin(),
new VueLoaderPlugin,
new VuetifyLoaderPlugin(),
],
module: {
rules: [
{
test: /\.vue$/,
loader: "vue-loader"
},
{
test: /\.css$/,
use: [
'vue-style-loader',
'css-loader'
],
},
{
test: /\.scss$/,
use: [
'vue-style-loader',
'css-loader',
'sass-loader'
],
},
{
test: /\.sass$/,
use: [
'vue-style-loader',
'css-loader',
'sass-loader?indentedSyntax'
],
},
{
test: /\.vue$/,
loader: 'vue-loader',
options: {
loaders: {
// Since sass-loader (weirdly) has SCSS as its default parse mode, we map
// the "scss" and "sass" values for the lang attribute to the right configs here.
// other preprocessors should work out of the box, no loader config like this necessary.
'scss': [
'vue-style-loader',
'css-loader',
'sass-loader'
],
'sass': [
'vue-style-loader',
'css-loader',
'sass-loader?indentedSyntax'
]
}
// other vue-loader options go here
}
},
{
test: /\.(js|jsx)$/,
loader: 'babel-loader',
exclude: /node_modules/,
options: {
presets: [['@babel/preset-env', { modules: false }]]
}
},
{
test: /\.(png|jpg|gif|svg)$/,
loader: 'file-loader',
options: {
name: '[name].[ext]?[hash]'
}
},
{
test: /\.(css|sass)$/,
loader: ['node-sass', 'sass-loader']
},
{
test: /\.s(c|a)ss$/,
use: [
'vue-style-loader',
'css-loader',
{
loader: 'sass-loader',
options: {
implementation: require('sass'),
fiber: require('fibers'),
indentedSyntax: true // optional
}
}
]
},
]
},
resolve: {
alias: {
'vue$': 'vue/dist/vue.esm.js',
'@': path.resolve(__dirname, 'src'),
},
extensions: ['*', '.js', '.vue', '.json']
},
devServer: {
historyApiFallback: true,
noInfo: true,
overlay: true,
host: 'localhost',
},
performance: {
hints: false
},
devtool: '#eval-source-map'
}
試したこと
・いろいろな記事・質問サイト・公式サイトなどを見て試行錯誤した結果、上記のようなwebpack.config.json, package.jsonになりました。
・render関数にすればうまくいくと思ったのですが、ダメでした。
補足情報(FW/ツールのバージョンなど)
teratil初質問です。質問の仕方に不備・失礼があれば申し訳ございません。
ちなみにこれにもう2日費やしてます。どうにかして解決したいです。
-
気になる質問をクリップする
クリップした質問は、後からいつでもマイページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
クリップを取り消します
-
良い質問の評価を上げる
以下のような質問は評価を上げましょう
- 質問内容が明確
- 自分も答えを知りたい
- 質問者以外のユーザにも役立つ
評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。
質問の評価を上げたことを取り消します
-
評価を下げられる数の上限に達しました
評価を下げることができません
- 1日5回まで評価を下げられます
- 1日に1ユーザに対して2回まで評価を下げられます
質問の評価を下げる
teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。
- プログラミングに関係のない質問
- やってほしいことだけを記載した丸投げの質問
- 問題・課題が含まれていない質問
- 意図的に内容が抹消された質問
- 過去に投稿した質問と同じ内容の質問
- 広告と受け取られるような投稿
評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。
質問の評価を下げたことを取り消します
この機能は開放されていません
評価を下げる条件を満たしてません
質問の評価を下げる機能の利用条件
この機能を利用するためには、以下の事項を行う必要があります。
- 質問回答など一定の行動
-
メールアドレスの認証
メールアドレスの認証
-
質問評価に関するヘルプページの閲覧
質問評価に関するヘルプページの閲覧
0
全体像を把握できていないため、直ぐに解決につながる回答はできません。
問題は複数箇所あると思われます (ex. webpack.configの設定)
「コンポーネントをDOMに反映させたい」を取り急ぎ実現するために、以下の方針で開発をすすめることをお勧めします。
VueCLIで雛形を生成する
$ vue init webpack [your project name]
Vueプロジェクトが正常に起動することを確認する
VueRouterを追加する
Vueプロジェクトが正常に起動することを確認する
SASSを追加する
Vueプロジェクトが正常に起動することを確認する
どこかの段階で正常に動かない問題が発生しても、新しく追加した箇所が原因ですので、迅速な問題解決が可能だと思います。
投稿
-
回答の評価を上げる
以下のような回答は評価を上げましょう
- 正しい回答
- わかりやすい回答
- ためになる回答
評価が高い回答ほどページの上位に表示されます。
-
回答の評価を下げる
下記のような回答は推奨されていません。
- 間違っている回答
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。
0
結果
一応解決しましたが、原因はわかりませんでした。
解決方法
webpackを一から勉強しなおし、cliを使わずハンドでwebpackを導入しました。
webpackの教材
https://www.udemy.com/webpack-crash-course/
投稿
-
回答の評価を上げる
以下のような回答は評価を上げましょう
- 正しい回答
- わかりやすい回答
- ためになる回答
評価が高い回答ほどページの上位に表示されます。
-
回答の評価を下げる
下記のような回答は推奨されていません。
- 間違っている回答
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。
15分調べてもわからないことは、teratailで質問しよう!
- ただいまの回答率 88.37%
- 質問をまとめることで、思考を整理して素早く解決
- テンプレート機能で、簡単に質問をまとめられる
質問への追記・修正、ベストアンサー選択の依頼
dyoshikawa
2019/08/18 23:37
デベロッパーツールのコンソールにエラーは出ていないですか?
nakar0_
2019/08/19 00:27
はい、まったく何も出ていません。
console.logでVueの情報を出力してみたりとかもしてみましたが、まったくわかりませんでした。