Мы хотели бы создать микро приложения, которые запускаются на AWS Lambda. Для этого мы изучаем webpack 2. Однако у нас есть устаревший код, который использует fs.readdirSync
, чтобы получить список имен файлов/модулей для создания списка модулей. При выполнении пакета мы получаем ошибку Error: ENOENT: no such file or directory, scandir '/innerLib'
, потому что webpack не знает, как выполнить fs.readdirSync(path.resolve(__dirname, 'innerLib'));
в файле lib/lib.js
и разрешить массив имен файлов во время расслоения.Webpack bundle ENOENT: нет такого файла или каталога fs.readdirSync
Какие подходы мы можем предпринять с помощью wepback без внесения серьезных изменений в устаревший код. Я включил простой пример ниже и на github
webpack.config.js
var path = require('path');
var webpack = require('webpack');
module.exports = {
context: __dirname,
entry: ['./index.js'],
output: {
filename: 'bundle.js',
},
target: 'node',
}
index.js
const lib = require('./lib/lib.js');
lib.getModuleList((err, modules) => console.log(modules));
Библиотека/lib.js
const fs = require('fs');
const path = require('path');
let moduleList = [];
let list = fs.readdirSync(path.resolve(__dirname, 'innerLib'));
exports.getModuleList = getModuleList;
function getModuleList(callback) {
return callback(null, moduleList);
}
list.forEach(filename => {
moduleList.push({
name: filename
});
});
Библиотека/innerLib/a.js
console.log('a lib loaded');
Библиотека/innerLib/b.js
console.log('b lib loaded');
как вы выполняете комплект? –