2

我刚刚使用纱线工作区将我的整体 webpack/koa 项目拆分为多个包。我有一个我称之为“web”的包,它只是 webpack 构建。然后我有另一个称为“服务器”的 koa,它同时为 webpack 工件和 api 提供服务。

我遇到的问题是 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]

等等。我试图将 deps 添加到我的服务器项目中以填充这些内容,但它是一个我不应该潜入的深兔子洞,不是吗?

使用 webpack-dev-middleware 与 web 构建和 express/koa 服务器节点包分离的正确方法是什么?

我在我的服务器项目中使用 ES6 模块--experimental-modules,这可能是罪魁祸首吗?

4

0 回答 0