Open sumakokima2 opened 5 years ago
Child html-webpack-plugin for "index.html": 1 asset Entrypoint undefined = index.html [./node_modules/html-webpack-plugin/lib/loader.js!./index.html] 492 bytes {0} [built] [./node_modules/lodash/lodash.js] 527 KiB {0} [built] [./node_modules/webpack/buildin/global.js] (webpack)/buildin/global.js 472 bytes {0} [built] [./node_modules/webpack/buildin/module.js] (webpack)/buildin/module.js 497 bytes {0} [built] ℹ 「wdm」: Failed to compile.
visualcodeの変更がデータに反映されていないというバグによるもの。
Refused to apply style from 'http://localhost:3000/cesium/Widgets/widgets.css' because its MIME type ('text/html') is not a supported stylesheet MIME type, and strict MIME checking is enabled. Cesium.js:1 Failed to load resource: the server responded with a status of 404 (Not Found) log.js:24 [HMR] Waiting for update signal from WDS... react-hot-loader.development.js:2432 React-Hot-Loader: react-🔥-dom patch is not detected. React 16.6+ features may not work. patch @ react-hot-loader.development.js:2432 external"Cesium":1 Uncaught ReferenceError: Cesium is not defined at eval (external"Cesium":1) at Object.cesium (main.js:2522) at webpack_require (main.js:724) at fn (main.js:101) at Module.eval (app.js:6) at eval (app.js:54) at Module../src/app.js (main.js:2488) at webpack_require (main.js:724) at fn (main.js:101) at eval (index.js:6) on_content_end.js:54 on_content_end ==>response to loadPagePattern, href=http://localhost:3000/, pattern.id=undefined on_content_end.js:80 before call TMExt.initTooltip on_content_end.js:85 after call TMExt.initTooltip :3000/favicon.ico:1 Failed to load resource: the server responded with a status of 404 (Not Found) client:79 [WDS] Hot Module Replacement enabled. client:153 [WDS] Warnings while compiling. warnings @ client:153 client:162 unable to locate '../node_modules/cesium/Build/CesiumUnminified' at '/Users/haradamakiko/git/node_modules/cesium/Build/CesiumUnminified' warnings @ client:162 localhost/:1 Refused to apply style from 'http://localhost:3000/cesium/Widgets/widgets.css' because its MIME type ('text/html') is not a supported stylesheet MIME type, and strict MIME checking is enabled.
正解
[
new webpack.DefinePlugin({
CESIUM_BASE_URL: JSON.stringify("/cesium"),
}),
new CopyPlugin([
{
from: node_modules/cesium/Build/Cesium${prod ? "" : "Unminified"}
,
to: "cesium",
},
]),
new HtmlPlugin({
template: "index.html",
}),
new HtmlIncludeAssetsPlugin({
append: false,
assets: ["cesium/Widgets/widgets.css", "cesium/Cesium.js"],
}),
...(prod ? [] : [new webpack.HotModuleReplacementPlugin()]),
]
間違い
[
new webpack.DefinePlugin({
CESIUM_BASE_URL: JSON.stringify("/cesium"),
}),
new CopyPlugin([
{
from: ../node_modules/cesium/Build/Cesium${prod ? "" : "Unminified"}
,
to: "cesium",
},
]),
new HtmlPlugin({
template: "index.html",
}),
new HtmlIncludeAssetsPlugin({
append: false,
assets: ["cesium/Widgets/widgets.css", "cesium/Cesium.js"],
}),
...(prod ? [] : [new webpack.HotModuleReplacementPlugin()]),
]
new CopyPlugin([ { from: ../node_modules/cesium/Build/Cesium${prod ? "" : "Unminified"}, to: "cesium", }, ]),
のディレクトリ設定が間違っていました。上記のメソッドで実行してエラーが発生した場合、
1.モジュールの不足 2.サンプルファイルの微調整のミス 3.エントリーポイントとパス
の3点をまず見てみるとよいかもしれません。
今回3回目ですが、
通常ひっかかるモジュールの不足は一発オッケー。
サンプルファイルとの調整の時に、webpackとpackage.jsonの比較をきちんと行わなかったため、webpackで大きなミスが発覚しました。
最後に、エントリーポイントを.src
にするか.src/index.js
にするかは作ったファイルの構成に依存します。どうしたら正解かイメージできないときは、両方やってみましょう。
手順
開発環境を整えることが本章の目的です。 まず、今回勉強するコードのベースとなるファイル群をgitから持ってきます。次にgitの醍醐味である
package.json
の設定をします。このpackage.jsonを基盤に、開発に必要となる初期モジュールを導入していきます。基本的には
$ npm install
で一括でできます。次にwebpackの設定をします。これは、Webアプリケーションに必要なリソースの依存関係を解決し、CSSやJavaScriptなどのアセットを生成するビルドツールです(上記参考リンクを参照)。簡単に言い換えると、 jsやcssデータを、開発時には細分化して書き込めて、表示させる(システム稼働するとき)は、そのときに必要なものだけを使うことができる ということです。
gitクローン
$ git clone git@github.com:sumakokima2/resium-sample2.git
*クローンした後は必ず
cd resium-sample2
でディレクトリを移動してください。package name: (resium-sample2) version: (1.0.0) description: entry point: (index.js) test command: git repository: (https://github.com/sumakokima2/resium-sample2.git) keywords: author: license: (ISC) About to write to /Users/haradamakiko/git/resium-sample2/package.json:
{ "name": "resium-sample2", "version": "1.0.0", "description": "", "main": "index.js", "scripts": { "test": "echo \"Error: no test specified\" && exit 1" }, "repository": { "type": "git", "url": "git+https://github.com/sumakokima2/resium-sample2.git" }, "author": "", "license": "ISC", "bugs": { "url": "https://github.com/sumakokima2/resium-sample2/issues" }, "homepage": "https://github.com/sumakokima2/resium-sample2#readme" }
Generating public/private rsa key pair. Enter file in which to save the key (/Users/haradamakiko/.ssh/id_rsa): /Users/haradamakiko/.ssh/id_rsa already exists. Overwrite (y/n)? y
hh:resium-sample2 haradamakiko$ cat ~/.ssh/id_rsa.pub
ssh-rsa AAAAB3N...................fritz.box
"scripts": { "start": "webpack-dev-server --progress", "test": "eslint .", "build": "webpack --mode production" },
devtool: !prod ? void 0 : "eval-source-map", entry: "./src", externals: { cesium: "Cesium", },
new HtmlPlugin({ template: "index.html", }),
, resolve: { extensions: ['.wasm', '.mjs', '.js', '.json', '.ts', '.tsx'] }//tsを使うとき
{ "extends": ["tslint:recommended", "tslint-react", "tslint-config-prettier"], "rules": { "interface-name": false, "jsx-boolean-value": [true, "never"], "jsx-no-multiline-js": false, "no-console": false, "ordered-imports": false, "object-literal-sort-keys": false, "prettier": { "severity": "warning" } }, "rulesDirectory": ["tslint-plugin-prettier"] }
{ "compilerOptions": { "allowSyntheticDefaultImports": true, "esModuleInterop": true, "jsx": "react", "lib": ["es2015", "es2016", "es2017", "es2018", "dom"], "module": "commonjs", "moduleResolution": "node", "noImplicitReturns": true, "pretty": true, "rootDir": ".", "sourceMap": true, "strict": true, "target": "es5", "baseUrl": ".", "paths": { "": ["src/types/"] } } }
{ test: /.tsx?$/, exclude: /node_modules/, use: [ ...(prod ? [] : [ { loader: "babel-loader", options: { babelrc: false, cacheDirectory: true, plugins: ["react-hot-loader/babel"], }, }, ]), "ts-loader", ], },
resolve: { extensions: ['.wasm', '.mjs', '.js', '.json', '.ts', '.tsx'] }, (編集済み)