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

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

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

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

Express

ExpressはNode.jsのWebアプリケーションフレームワークです。 マルチページを構築するための機能セットおよびハイブリッドのWebアプリケーションを提供します。

Q&A

0回答

552閲覧

node.js用のexpressを用いたサーバスクリプトをWebpackでビルドする際のexternalsの設定はなぜ必要なのですか?

a.takagi

総合スコア4

Node.js

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

Express

ExpressはNode.jsのWebアプリケーションフレームワークです。 マルチページを構築するための機能セットおよびハイブリッドのWebアプリケーションを提供します。

0グッド

0クリップ

投稿2019/09/01 12:25

前提

expressを使用したnode.js用サーバスクリプトをtypescriptで記述し、機能ごとのtsファイルを分割して開発した上で一つのファイルにバンドルして使用するため、これをwebpackでビルドして使用しています。
expressをこのような環境でビルドしようとするとエラーが発生するため、回避策として、webpack-node-externals を使用してwebpack.config.js内でexternalsを設定せよとの情報に行き当たりました。

const nodeExternals = require('webpack-node-externals'); module.exports = { ... target:"node", externals:[nodeExternals()] ... }

以上の設定でwebpackでビルドした結果得られるjsファイルを仮にbundle.jsと呼ぶとき、
私の認識では以下のようになっているはずです

・externals設定によりnode_modulesフォルダ内のモジュールをbundle.jsに含めずビルドする
・サーバ起動時のルートディレクトリにはnode_modulesフォルダを丸ごと持ち込む必要がある
(つまり somefolder>node bundlle.js とコマンドを使用するとき以下のようになっている必要がある)

someFolder-bundle.js └node_modules

これに対して、私はnode_modulesフォルダを丸ごとよりもwebpackでバンドルするほうがminifyなどで軽くなり取り回しがいいと想像するので、expressをエラーを発生させずにバンドルする方法、もし不可能であればnode_modulesフォルダ丸ごとを扱うより取り回しを良くする方法を探しています。

質問

以上の認識を前提として質問いたします。
・上記認識は合っているか
・なぜexternalsを設定する必要があるのか
・externalsを設定する利点は何か

検索した情報のパッチワークで希望の機能を実現しながら勉強しているような段階のため、調べようにもとっかかりがなくこのような形で質問させていただきました。
よろしくお願いいたします。

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

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

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

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

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

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

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

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

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問