質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

1回答

2103閲覧

hyperappを使ったJSをwebpack4でビルドしたら表示されない

kumakuma112

総合スコア21

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

0クリップ

投稿2018/06/11 13:57

編集2018/06/11 15:04

hyperappのサンプルソースをwebpack4でビルドしたくて、webpackの設定をかいたのですが、書き方が間違ってるのか、ビルドはできるものの、htmlに何も表示されません。

ビルドされたjsは、正常に読み込まれていて、コンソールログを書けば内容が正しく出力されます。
ただhyperappの記述でかいたviewがbodyに出力されません。

webpack.config.js

js

1const webpack = require('webpack'); 2const path = require('path'); 3const UglifyJSPlugin = require('uglifyjs-webpack-plugin'); 4 5module.exports = (env, argv) => { 6 // argv.modeにはwebpackを実行したmodeが格納されている 7 // 例えば webpack --mode development と実行すれば 8 // argv.mode には 'development' が格納されている 9 // そのためdevelopmentモードで実行したかどうかを判定できる 10 const IS_DEVELOPMENT = argv.mode === 'development'; 11 12 return { 13 // エントリーポイントの設定 14 entry: './src/app.js', 15 // 出力の設定 16 output: { 17 // 出力するファイル名 18 filename: 'app.js', 19 // 出力先のパス(v2系以降は絶対パスを指定する必要がある) 20 path: path.join(__dirname, 'www/js') 21 }, 22 // developmentモードで有効になるdevtool: 'eval'を上書き 23 // developmentモードでビルドした時だけソースマップを出力する 24 devtool: IS_DEVELOPMENT ? 'source-map' : 'none', 25 // productionモードで有効になるoptimization.minimizerを上書きする 26 optimization: { 27 // developmentモードでビルドした場合 28 // minimizer: [] となるため、consoleは残されたファイルが出力される 29 // puroductionモードでビルドした場合 30 // minimizer: [ new UglifyJSPlugin({... となるため、consoleは削除したファイルが出力される 31 minimizer: IS_DEVELOPMENT 32 ? [] 33 : [ 34 new UglifyJSPlugin({ 35 uglifyOptions: { 36 compress: { 37 drop_console: true 38 } 39 } 40 }) 41 ] 42 }, 43 module: { 44 rules: [ 45 { 46 test: /.js$/, 47 exclude: /node_modules/, 48 loader: 'babel-loader', 49 options: { 50 presets: [['env', { modules: false }]], 51 plugins: [['transform-react-jsx', { "pragma": "h" }]] 52 } 53 } 54 ] 55 } 56 } 57}; 58

package.json

json

1{ 2 "name": "hyperapp-count", 3 "version": "1.0.0", 4 "description": "Minimal web app", 5 "main": "index.js", 6 "scripts": { 7 "watch": "webpack --mode development --watch", 8 "build": "webpack --mode production", 9 "server": "browser-sync start --server ./www --files ./www/**/*", 10 "dev": "npm-run-all -p watch server" 11 }, 12 "author": "", 13 "license": "MIT", 14 "private": true, 15 "dependencies": { 16 "hyperapp": "^1.2.5" 17 }, 18 "devDependencies": { 19 "babel-core": "^6.26.0", 20 "babel-loader": "^7.1.2", 21 "babel-plugin-transform-react-jsx": "^6.22.0", 22 "babel-preset-env": "^1.7.0", 23 "browser-sync": "^2.18.13", 24 "npm-run-all": "^4.1.2", 25 "webpack": "^4.7.0", 26 "webpack-cli": "^3.0.3" 27 } 28} 29

app.js

js

1import { app, h } from 'hyperapp'; 2 3// 状態管理オブジェクト 4const state = { 5 greeting: "こんにちは世界" 6}; 7 8// 状態を更新する関数群 9const actions = { 10}; 11 12// 実際に表示するタグ 13const view = (state, actions) => ( 14 <header> 15 <h1 id="title">{ state.greeting }</h1> 16 </header> 17); 18 19app(state, actions, view, document.body);

html

html

1<!DOCTYPE html> 2<html> 3<head> 4 <meta charset="utf-8"> 5 <title>Hyperapp Countサンプル</title> 6 <link rel="stylesheet" href="./css/bundle.css"> 7</head> 8<body> 9 <script src="./js/app.js"></script> 10</body> 11</html>

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

記載されているソースコードを元に、同じ環境を手元で作ったところ、正常に表示されました。
そのため、おそらく

  • 最新のpackageを入れ直すことで動く
  • このソースに書かれていない箇所に違いがある(フォルダの構成、ビルド時のコマンド、サーバーの起動方法など)

のうちいずれかと思われます。

投稿2018/07/12 21:50

pon2018

総合スコア8

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問