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

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

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

npmは、Node Packaged Modulesの略。Node.jsのライブラリ・パッケージを管理できるツールです。様々なモジュールを簡単にインストールでき、自分でモジュールを作成し公開する際にも使用できます。

Google Cloud Platform

Google Cloud Platformは、Google社がクラウド上で提供しているサービス郡の総称です。エンドユーザー向けサービスと同様のインフラストラクチャーで運営されており、Webサイト開発から複雑なアプリ開発まで対応可能です。

Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

Webサーバー

Webサーバーとは、HTTPリクエストに応じて、クライアントに情報を提供するシステムです。

Q&A

解決済

1回答

2002閲覧

webpackで立てたサーバに外部からアクセスできない

Asky

総合スコア17

npm

npmは、Node Packaged Modulesの略。Node.jsのライブラリ・パッケージを管理できるツールです。様々なモジュールを簡単にインストールでき、自分でモジュールを作成し公開する際にも使用できます。

Google Cloud Platform

Google Cloud Platformは、Google社がクラウド上で提供しているサービス郡の総称です。エンドユーザー向けサービスと同様のインフラストラクチャーで運営されており、Webサイト開発から複雑なアプリ開発まで対応可能です。

Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

Webサーバー

Webサーバーとは、HTTPリクエストに応じて、クライアントに情報を提供するシステムです。

0グッド

0クリップ

投稿2020/06/14 08:00

前提・実現したいこと

Google Compute Engineにwebpackで立てたwebサーバに外部からブラウザでアクセスできるようにしたいです。
以下のサイトの説明にならいwebpackでサーバを立てました。
参考1:https://ics.media/entry/12140/

また、外部からアクセスできるように、以下のサイトにならって、
webpack.config.js内に以下を追記しました。

devServer: { host: '0.0.0.0', disableHostCheck: true, }

参考2:https://tackeyy.com/blog/posts/how-to-access-app-through-the-ip-with-webpack-dev-server
参考3:https://obel.hatenablog.jp/entry/20180217/1518871500

npm run startで、コンパイルが成功したように見えましたが、http://外部ip:8080/にアクセスできません。

$ npm run start > webpack-ics@1.0.0 start /home/asky/webpack-ics > webpack-dev-server ℹ 「wds」: Project is running at http://0.0.0.0:8080/ ℹ 「wds」: webpack output is served from / ℹ 「wds」: Content not from webpack is served from dist 中略 ℹ 「wdm」: Compiled successfully.

発生している問題・エラーメッセージ

ブラウザでhttp://外部ip:8080を開くと、以下のメッセージが表示されます。

このサイトにアクセスできません localhost で接続が拒否されました。 次をお試しください 接続を確認する プロキシとファイアウォールを確認する ERR_CONNECTION_REFUSED

該当のソースコード

package.json

json

1{ 2 "name": "webpack-ics", 3 "version": "1.0.0", 4 "description": "", 5 "main": "index.js", 6 "scripts": { 7 "start": "webpack-dev-server", 8 "build": "webpack", 9 "test": "echo \"Error: no test specified\" && exit 1" 10 }, 11 "keywords": [], 12 "author": "", 13 "license": "ISC", 14 "devDependencies": { 15 "webpack": "^4.43.0", 16 "webpack-cli": "^3.3.11", 17 "webpack-dev-server": "^3.11.0" 18 } 19}

webpack.config.js

js

1module.exports = { 2 mode: "development", 3 4 // メインとなるJavaScriptファイル(エントリーポイント) 5 entry: `./src/index.js`, 6 7 devServer: { 8 host: '0.0.0.0', 9 disableHostCheck: true, 10 contentBase: "dist", 11 open: true 12 }, 13 14 // ファイルの出力設定 15 output: { 16 // 出力ファイルのディレクトリ名 17 path: `${__dirname}/dist`, 18 // 出力ファイル名 19 filename: "main.js" 20 } 21};

src/index.js

js

1// import 文を使って sub.js ファイルを読み込む。 2import { hello } from "./sub"; 3 4// sub.jsに定義されたJavaScriptを実行する。 5hello();

src/sub.js

js

1// export文を使ってhello関数を定義する。 2export function hello() { 3 alert("helloメソッドが実行された。"); 4}

試したこと

試しに、以下のサイトを参考にしてnginxをインストールしてNode.jsアプリをつくり、
npm run startしてみたところ、
http://外部ip:8080/でブラウザからアクセスできました。
ですので、http://外部ip:8080/にそもそもアクセスできないというわけではないのではないかと考えています。

https://qiita.com/yfujii01/items/41c15d885830deea8ed1

index.js

js

1const express = require('express'); 2const bodyParser = require('body-parser'); 3const app = express(); 4app.use(bodyParser.urlencoded({extended: true})); 5app.use(bodyParser.json()); 6 7app.get('/', (req, res) => res.send('Hello World!')); 8 9app.post('/test', (req, res) => { 10 let result = {}; 11 if (req.body.password === 'hoge') { 12 result.result = "true"; 13 } else { 14 result.result = "false"; 15 } 16 res.json(result); 17}); 18 19app.listen(8080);

package.json

json

1{ 2 "name": "express-api-2", 3 "version": "1.0.0", 4 "description": "", 5 "main": "index.js", 6 "scripts": { 7 "start": "forever start index.js", 8 "stop": "forever stop index.js", 9 "test": "echo \"Error: no test specified\" && exit 1" 10 }, 11 "keywords": [], 12 "author": "", 13 "license": "ISC", 14 "dependencies": { 15 "body-parser": "^1.19.0", 16 "express": "^4.17.1" 17 }, 18 "devDependencies": { 19 "forever": "^3.0.0" 20 } 21}

補足情報(FW/ツールのバージョンなど)

Google Compute Engine
Ubuntu 18.04
Node.js 10.21.0
npm 6.14.4
webpack 4.43.0

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

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

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

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

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

guest

回答1

0

ベストアンサー

そもそも論として、webpack-dev-serverは「ファイルを監視して、更新されたらそのたびに再ビルドする」ためのサーバなので、サーバサイドに置くものではありません。

ローカルでwebpackを処理して、得られた結果のJavaScriptファイルをサーバに置きましょう。

投稿2020/06/14 09:59

maisumakun

総合スコア145184

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

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

Asky

2020/07/27 10:19

すみません、返答ができておりませんでした。ご回答ありがとうございます。勉強になりました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問