2

yarn ワークスペースを使用して、モノリス webpack/koa プロジェクトを複数のパッケージに分割しました。「web」と呼ぶパッケージが 1 つあります。これは webpack ビルドです。次に、「サーバー」と呼ばれる別のものがあります。これは、webpack アーティファクトと API の両方を提供する koa です。

私が抱えている問題は、webpack ビルドが実行時にサーバー パッケージからの依存関係を解決しているように見えるため、失敗することです。

Web プロジェクトから webpack コンパイラを公開して、サーバー プロジェクトの dev で使用できるようにします。

const webpack = require('webpack')
const devConfig = require('./webpack.dev.js')
const compiler = webpack(devConfig)
module.exports = compiler

そして、これをミドルウェアとして Koa に貼り付けます。

import devWebpackCompiler from '@kb-front/web' // the web package
const webpackMiddleware = await koaWebpack({ compiler: devWebpackCompiler })
app.use(webpackMiddleware)

ここでは koa-webpack を使用していますが、'webpack-dev-middleware' と 'webpack-hot-client' を独自のラッピングで手動で使用しようとしましたが、まったく同じ動作が得られます。

私が得るのは次のようなものです:

ERROR in multi @babel/polyfill ../web/src/marko/marko-bootstrap ../web/src/materialize/kb-materialize.scss
Module not found: Error: Can't resolve 'babel-loader' in '/Users/viktor/dev/projects/kb-frontend/packages/server'
 @ multi @babel/polyfill ../web/src/marko/marko-bootstrap ../web/src/materialize/kb-materialize.scss main[1]

など。サーバー プロジェクトに dep を追加してこれらを埋めようとしましたが、掘り下げる必要のない深いうさぎの穴ですよね?

Web ビルドと Express/koa サーバー ノード パッケージを分離して webpack-dev-middleware を使用する正しい方法は何ですか?

サーバー プロジェクトで ES6 モジュールを使用しています--experimental-modulesが、それが原因でしょうか?

4

0 に答える 0