Posted at

【webpack】Cannot find module "../lib/utils.js"

More than 1 year has passed since last update.


事の始まり

Electron + Reactで遊んでたら、

タイトルのエラーがおきた。

エラーの内容でググっても、すぐに解決記事が引っかからなかったので、

ここに書いておくよ。


忙しい人向け

webpack.configのexternalsの対象に、node_moduleを含めればいいよ。


エラーの詳細

var UglifyJS = exports;

var FILES = UglifyJS.FILES = [
"../lib/utils.js",
"../lib/ast.js",
"../lib/parse.js",
"../lib/transform.js",
"../lib/scope.js",
"../lib/output.js",
"../lib/compress.js",
"../lib/sourcemap.js",
"../lib/mozilla-ast.js",
"../lib/propmangle.js",
"./exports.js",
].map(function(file){
return /*require.resolve*/(!(function webpackMissingModule() { var e = new Error("Cannot find module \".\""); e.code = 'MODULE_NOT_FOUND'; throw e; }()));
});

UglifyJSの問題なのかな?


解決記事

https://github.com/webpack-contrib/uglifyjs-webpack-plugin/issues/226


If it is a server-side project, just don't pack the node_modules.


サーバー側のプロジェクトの場合は、node_moduleをパックしないでください。


そもそも

https://www.npmjs.com/package/webpack-node-externals


When bundling with Webpack for the backend - you usually don't want to bundle its node_modules dependencies.


バックエンド用のWebpackにバンドルするとき、通常はnode_modulesの依存関係をバンドルしたくない。


・・・そうなの?

これ!っていう理由が見つけられなかったのですが、

serverless + webpack関連の記事で、

外部モジュールのrequireでwebpackコマンドが失敗するよというものが何件が見受けられました。

私の事象とは異なりますが、requireを使える環境ではnode_moduleはバンドルの依存関係から

外したほうが良いという事でしょうか。


解決

webpack-node-externalsを使うと、

いい感じにnode_moduleをexternals出来るらしいので、

そのようにいたします。

npm install webpack-node-externals --save-dev


webpack.config.babel.js

import nodeExternals from 'webpack-node-externals';

export default {
・・・

externals: [nodeExternals()],

・・・
};


動いた動いた。

詳しく解説いただける方、コメントいただけると助かりますm(__)m (主に私が