Ответ 1
Просто отправьте ответ, так как не все читают комментарии к SO. @Aurora0001 прибил его. Конфигурация Webpack должна иметь этот набор:
"target": "node"
Когда я включаю 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'
}
]
}
}
Я пробовал:
Прочитайте где-нибудь, чтобы изменить свойство node fs. Он удаляет предупреждения об ошибках, но я не думаю, что это хорошее постоянное решение.
module.exports = {
node: {
fs: "empty"
}
}
Время: 2496 мс Атрибуты размера активов ChunkNames bundle.js 761 kB 0 [испущенный] сервер bundle.js.map 956 kB 0 [испущенный] сервер + 119 скрытых модулей
ПРЕДУПРЕЖДЕНИЕ в. /~/express/lib/view.js Критические зависимости: 78: 29-56 запрос зависимости является выражением @./~/express/lib/view.js 78: 29-56 ОШИБКА в. /~/express/lib/view.js
Модуль не найден: Ошибка: невозможно разрешить модуль 'fs' в /Users/clementoh/Desktop/templateplate 2/node_modules/express/lib @./~/express/lib/view.js 18: 9-22 ОШИБКА в. /~/send/index.js
Модуль не найден: Ошибка: невозможно разрешить модуль 'fs' в/Users/clementoh/Desktop/templateplate2/ node_modules/отправить @./~/send/index.js 24: 9-22 ОШИБКА в. /~/etag/index.js
Модуль не найден: Ошибка: невозможно разрешить модуль 'fs' в /Users/clementoh/Desktop/templateplate 2/node_modules/etag @./~/etag/index.js 22: 12-25 ОШИБКА в. /~/destroy/index.js
Модуль не найден: Ошибка: невозможно разрешить модуль 'fs' в /Users/clementoh/Desktop/templateplate 2/node_modules/destroy @./~/destroy/index.js 14: 17-30 ОШИБКА в. /~/mime/mime.js
Модуль не найден: Ошибка: невозможно разрешить модуль 'fs' в /Users/clementoh/Desktop/templateplate 2/node_modules/mime @./~/mime/mime.js 2: 9-22
Просто отправьте ответ, так как не все читают комментарии к SO. @Aurora0001 прибил его. Конфигурация Webpack должна иметь этот набор:
"target": "node"
Я нахожусь в стеке Angular 2 - Electron - Webpack, и мне нужно было использовать fs в моей службе, я наконец нашел, как это сделать:
1) внутри вашего webpack.common.js, укажите target:'electron-renderer'
2) внутри вашей службы или компонента: import * as fs from 'fs';
и использовать fs, как для проекта node.
Надеюсь, что это поможет!
Я решил эту проблему двумя шагами:
Удалить каталог 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"
...
}
патч-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
.