Bundle loopback с использованием веб-пакета - PullRequest
0 голосов
/ 27 апреля 2020

Я использую "webpack": "^4.43.0" для связывания моего приложения loopback-3. Я могу выполнить команду webpack без проблем, и она выполняется, но после запуска связанного файла я получаю следующую ошибку:

Error: ENOENT: no such file or directory, lstat 'D:\cldr'

Вот webpack.conf.js содержимое:

const path = require('path');
const LoopbackBootPlugin = require('loopback-webpack-plugin');

module.exports = {
  target: 'node',
  entry: './server/server.js',
  mode: 'production',
  resolve: {
    extensions: ['.js', '.json'],
  },
  output: {
    path: path.resolve(__dirname, 'dist'),
    filename: `bundle.js`,
  },
  optimization: {
    minimize: false
  },
  plugins: [
    new LoopbackBootPlugin()
  ]
};

Я попытался добавить

alias: {
      cldr$: 'cldrjs',
      cldr: 'cldrjs/dist/cldr'
    }

для разрешения свойства, но все еще не работает правильно.

1 Ответ

0 голосов
/ 07 мая 2020

Привет от команды LoopBack ?

LoopBack не поддерживает связывание через Webpack, поддерживается только Browserify .

При запуске LoopBack загружает файлы с использованием динамических путей c, поэтому требуется специальная интеграция с упаковщиками, чтобы гарантировать, что динамически загруженные артефакты включены в комплект браузера и могут быть загружены с помощью loopback-boot.

Перекрестная публикация с https://loopback.io/doc/en/lb3/Using-Browserify.html:

Этап сборки загружает все файлы конфигурации, объединяет значения из дополнительных файлов конфигурации, таких как app.local.js, и создает набор инструкций, которые можно использовать для загрузки приложения.

Эти инструкции должны быть включены в комплект браузера вместе со всеми конфигурационными сценариями models/ и boot/.

Не беспокойтесь, вам не нужно понимать эти детали. Просто позвоните по номеру boot.compileToBrowserify(), и он обо всем позаботится.

var browserify = require('browserify');
var boot = require('loopback-boot');

var b = browserify({
  basedir: appDir,
});

// add the main application file
b.require('./browser-app.js', { expose: 'loopback-app' });

// add boot instructions
boot.compileToBrowserify(appDir, b);

// create the bundle
var out = fs.createWriteStream('browser-bundle.js');
b.bundle().pipe(out);
// handle out.on('error') and out.on('close')

Вы можете найти источник для compileToBrowserify здесь, в loopback-boot/lib/bundler.js. Я думаю, что должна быть возможность адаптировать скрипт для использования Webpack вместо Browserify API, но я никогда не пробовал этого, поэтому YMMV ?‍♂️

...