我使用的是 "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'
}
来解决属性问题,但仍然不能正常工作。
LoopBack团队的朋友们,你们好👋。
LoopBack不支持通过Webpack进行捆绑,只支持通过 浏览器化 是支持的。
在启动时,LoopBack是使用动态路径加载文件的,因此它需要与捆绑程序进行自定义集成,以确保动态加载的工件被包含在浏览器捆绑中,并能被loopback-boot加载。
交叉发布自 https:/loopback.iodocenlb3Using-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 APIs的脚本,但我从来没有尝试过,所以YMMV 🤷♂️。