Expressをプロジェクトに含めると、webpackでビルドしようとすると常にこれらのエラーが発生します。
webpack.config.dev.js
var path = require("path")
module.exports = {
entry: {
"server": "./server/server.ts"
},
output: {
path: path.resolve(__dirname, "dist"),
filename: "bundle.js",
publicPath: "/public/"
},
module: {
loaders: [
{
test: /\.ts(x?)$/,
exclude: /node_modules/,
loader: "ts-loader"
}, {
test: /\.js(x?)$/,
exclude: /node_modules/,
loader: "babel-loader"
}, {
test: /\.json$/,
loader: "json-loader"
}, {
test: /\.scss$/,
exclude: /node_modules/,
loaders: ["style-loader", "css-loader", "postcss-loader", "sass-loader"]
}, {
test: /\.css$/,
loader: ["style-loader", "css-loader", "postcss-loader"]
}, {
test: /\.(jpe?g|gif|png|svg)$/i,
loader: 'url-loader?limit=10000'
}
]
}
}
私はもう試した:
ノードのfsプロパティを変更するには、どこかを読んでください。エラー警告は削除されますが、これが永続的な解決策としては良いとは思いません。
module.exports = {
node: {
fs: "empty"
}
}
時間:2496msアセットサイズチャンクチャンク名bundle.js 761 kB 0 [emitted] server bundle.js.map 956 kB 0 [emitted] server + 119隠しモジュール
./~/express/lib/view.jsの警告重要な依存関係:78:29-56依存関係のリクエストは式です@ ./~/express/lib/view.js 78:29-56 ./のエラー〜/ express/lib/view.js
モジュールが見つかりません:エラー:/ Users/clementoh/Desktop/boilerplate2/node_modules/express/lib @ ./~/express/lib/view.jsのモジュール 'fs'を解決できません./~/の18:9-22エラーsend/index.js
モジュールが見つかりません:エラー:/ Users/clementoh/Desktop/boilerplate2/node_modules/send @ ./~/send/index.jsのモジュール 'fs'を解決できません。/~/etag/indexのエラー24:9-22 js
モジュールが見つかりません:エラー:/ Users/clementoh/Desktop/boilerplate2/node_modules/etag @ ./~/etag/index.js 22:12-25 ./~/destroy/indexのエラーでモジュール 'fs'を解決できません。 js
モジュールが見つかりません:エラー:/ Users/clementoh/Desktop/boilerplate2/node_modules/destroy @ ./~/destroy/index.jsのモジュール 'fs'を解決できません。14/ 17-30 ./~/mime/mimeのエラー。 js
モジュールが見つかりません:エラー:/ Users/clementoh/Desktop/boilerplate2/node_modules/mime @ ./~/mime/mime.js 2:9-22のモジュール 'fs'を解決できません
誰もがSOについてコメントを読んでいないため、答えを投稿するだけです。 @ Aurora0001が釘付けにしました。 Webpackの設定には次の設定が必要です。
"target": "node"
私はスタック上にいますAngular 2-Electron-Webpackと私は私のサービスにfsを使用する必要がありました、私は最終的にどのようにするかを見つけました:
1)webpack.common.js内で、target:'electron-renderer'
を指定します
2)サービスまたはコンポーネントの内部:import * as fs from 'fs';
で、ノードプロジェクトの場合と同様にfsを使用します。
それが役立つことを願っています!
この問題は2つのステップで解決しました。
node_modules
ディレクトリを削除します
target:'node'
をwebpack構成ファイルに追加します
次にnpm install
を実行します。私にとってはうまくいきました。
追加した node: { fs: 'empty' }
運がなければ、
次に、コマンドを開始するために--configを追加しました。
webpack-dev-sever webpack.config.dev.js
--configフラグを使用して、カスタムファイルを使用します。
webpack-dev-sever --config webpack.config.dev.js
私にとっての解決策は、Angular-CLIモジュールをハッキングして、欠落しているノードモジュールを偽装することでした。
インストール後、次のファイルを見つけます。
node_modules/@angular-devkit/build-angular/src/angular-cli-files/models/webpack-configs/browser.js
node
行を見つけて、これを追加します。
node: { crypto: true, stream: true, fs: 'empty', net: 'empty' }
以上です!!!
注:パッケージを更新するたびに、このパッチを実行する必要があります。したがって、このスクリプトを使用します。
package.json
"scripts": {
...
"postinstall": "node patch-webpack.js"
...
}
patch-webpack.js
const fs = require('fs');
const f = 'node_modules/@angular-devkit/build-angular/src/angular-cli-files/models/webpack-configs/browser.js';
fs.readFile(f, 'utf8', function (err,data) {
if (err) {
return console.log(err);
}
let result = data.replace(/node: false/g, "node: {crypto: true, stream: true, fs: 'empty', net: 'empty'}");
fs.writeFile(f, result, 'utf8', function (err) {
if (err) return console.log(err);
});
});
"target": "node",
を追加するには、webpack.config.js
に追加します。