我刚刚使用纱线工作区将我的整体 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
,这可能是罪魁祸首吗?