Webpack 如何将nestjs应用程序与Web包绑定
我有一个nestjs应用程序,我需要将其与webpack捆绑在一起。捆绑包应该包含整个脚本和所有文件。因此,我创建了我的网页包配置:Webpack 如何将nestjs应用程序与Web包绑定,webpack,nestjs,bundling-and-minification,Webpack,Nestjs,Bundling And Minification,我有一个nestjs应用程序,我需要将其与webpack捆绑在一起。捆绑包应该包含整个脚本和所有文件。因此,我创建了我的网页包配置: const webpack = require('webpack'); const path = require('path'); module.exports = { entry: { backend: './src/index.ts', }, target: 'node', module: { rules: [ {
const webpack = require('webpack');
const path = require('path');
module.exports = {
entry: {
backend: './src/index.ts',
},
target: 'node',
module: {
rules: [
{
test: /.ts$/,
use: 'ts-loader',
},
{
test: /\.(graphql|gql)$/,
exclude: /node_modules/,
loader: 'webpack-graphql-loader',
},
{
test: /\.mjs$/,
include: /node_modules/,
type: "javascript/auto",
}
],
},
externals: ['fsevents'],
mode: 'production',
resolve: {
extensions: ['.ts', '.mjs', '.js', '.json'],
},
output: {
path: path.join(__dirname, 'bundled'),
library: 'handler',
libraryTarget: "commonjs2"
},
plugins: [
new webpack.IgnorePlugin({
checkResource(resource) {
const lazyImports = [
'@nestjs/microservices',
'cache-manager',
'@nestjs/microservices/microservices-module',
'@nestjs/websockets/socket-module',
'class-transformer',
'apollo-server-fastify',
];
if (!lazyImports.includes(resource)) {
return false;
}
try {
require.resolve(resource);
} catch (err) {
return true;
}
return false;
},
}),
],
};
它似乎工作正常,但当我稍微更改代码时,它开始抛出一个奇怪的错误
错误:嵌套无法解析r(?)的依赖项。请确保
索引[0]处的参数r在s上下文中可用
可能的解决办法:
-如果r是一个提供者,它是当前s的一部分吗?
-如果r是从单独的@Module导出的,那么该模块是否在s中导入@模块({
导入:[/*包含r*/]}的模块)
所以我试图表示最小的代码示例,并找到了错误发生的时间。记录器中的问题
import { Injectable, Logger } from '@nestjs/common';
@Injectable()
export class SecondService {
private readonly logger = new Logger(SecondService.name); // this line throw an error
}
所以,如果您只是评论日志记录器声明-一切都将开始工作。但这很奇怪,因为我有FirstController
,它使用FirstService
(它也使用记录器但不抛出错误),它使用SecondService
(它使用记录器并抛出错误)
我认为使用我的存储库比在这里传递代码更好:
运行使用:
npm run bundle && node -e "require('./bundled/backend.js').handler()"
请帮我解决这个奇怪的问题你看过这个答案了吗:以及其中链接的Github问题?Kim Kern,是的,我在创建webpack.config时看过这篇文章。