Far*_*rad 10 bundling-and-minification webpack nestjs
我有一个 Nestjs 应用程序,我需要将它与 webpack 捆绑在一起。捆绑包应包含整个脚本和所有文件。所以我创建了我的 webpack 配置:
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;
},
}),
],
};
Run Code Online (Sandbox Code Playgroud)
看起来它工作正常,但是当我稍微改变我的代码时,它开始抛出一个奇怪的错误。
错误:Nest 无法解析 r (?) 的依赖关系。请确保索引 [0] 处的参数 r 在 s 上下文中可用。
可能的解决方案: - 如果 r 是提供者,它是当前 s 的一部分吗?- 如果 r 从单独的 @Module 导出,该模块是否在 s 中导入?@Module({ import: [ /* 包含 r 的模块 */ ] })
所以我尝试表示最小的代码示例并发现错误发生的时间。记录器中的问题
import { Injectable, Logger } from '@nestjs/common';
@Injectable()
export class SecondService {
private readonly logger = new Logger(SecondService.name); // this line throw an error
}
Run Code Online (Sandbox Code Playgroud)
因此,如果您只是评论记录器声明 - 一切都会开始工作。但这很奇怪,因为我有FirstControllerwhich use FirstService(也使用记录器但不会抛出错误)which use SecondService(使用记录器并抛出错误)。
我认为使用我的存储库比在此处传递代码更好: https: //github.com/baleksandr48/webpack_for_nestjs
对于运行使用:
npm run bundle && node -e "require('./bundled/backend.js').handler()"
Run Code Online (Sandbox Code Playgroud)
请帮我解决这个奇怪的问题
| 归档时间: |
|
| 查看次数: |
13792 次 |
| 最近记录: |