webpack 如何缩小node.js typescript后端项目?

igsr9ssn  于 2024-01-08  发布在  Webpack
关注(0)|答案(1)|浏览(119)

我的webpack.config.js:

  1. const path = require('path');
  2. var fs = require('fs')
  3. var nodeModules = {};
  4. fs.readdirSync('node_modules').filter(function (x) {return ['.bin'].indexOf(x) === -1;}).forEach(function (mod){nodeModules[mod]= 'commonjs ' + mod;
  5. });
  6. module.exports = {
  7. mode: 'development',
  8. target: 'node',
  9. entry: './src/server,ts',
  10. output: {
  11. filename: 'bundle.js',
  12. path: path.resolve(__dirname, 'dist'),
  13. },
  14. resolve: {
  15. extensions: ['.ts', '.js'],
  16. },
  17. module: {
  18. rules: [
  19. {
  20. test: /\.ts$/,
  21. use: 'ts-loader',
  22. exclude: /node_modules/,
  23. },
  24. {
  25. test: /\.node$/,
  26. loader: 'node-loader',
  27. },
  28. ],
  29. },
  30. externals: [nodeModules],
  31. devtool: 'source-map',
  32. };

字符串
我的webpack.js.js文件有问题。当我运行npm run build时,它被配置为执行webpack,我遇到了与模块相关的错误。其中一个错误是:

  1. ERROR in ./node_modules/sequelize/lib/dialects/postgres/hstore.js 2:15-35
  2. Module not found: Error: Can't resolve 'pg-hstore' in 'C:\..\node_modules\sequelize\lib\dialects\postgres'
  3. resolve 'pg-hstore' in 'C:\..\node_modules\sequelize\lib\dialects\postgres'
  4. Parsed request is a module

mutmk8jj

mutmk8jj1#

我通过编辑webpack.config.js解决了这个问题

  1. var webpack = require('webpack');
  2. var path = require('path');
  3. var fs = require('fs');
  4. var nodeExternals = require('webpack-node-externals');
  5. module.exports = {
  6. mode: 'development',
  7. target: 'node',
  8. entry: './src/server.ts',
  9. output: {
  10. filename: 'bundle.js',
  11. path: path.resolve(__dirname, 'dist'),
  12. },
  13. resolve: {
  14. extensions: ['.ts', '.tsx', '.js', '.json'],
  15. alias: {
  16. '@': path.resolve(__dirname, 'src'),
  17. '@config': path.resolve(__dirname, 'src/config'),
  18. '@controllers': path.resolve(__dirname, 'src/controllers'),
  19. '@dtos': path.resolve(__dirname, 'src/dtos'),
  20. '@exceptions': path.resolve(__dirname, 'src/exceptions'),
  21. '@interfaces': path.resolve(__dirname, 'src/interfaces'),
  22. '@middlewares': path.resolve(__dirname, 'src/middlewares'),
  23. '@models': path.resolve(__dirname, 'src/models'),
  24. '@routes': path.resolve(__dirname, 'src/routes'),
  25. '@services': path.resolve(__dirname, 'src/services'),
  26. '@utils': path.resolve(__dirname, 'src/utils'),
  27. '@sentry/profiling-node': path.resolve(__dirname, 'node_modules/@sentry/profiling-node'),
  28. },
  29. },
  30. module: {
  31. rules: [
  32. {
  33. test: /\.ts$/,
  34. use: 'ts-loader',
  35. exclude: /node_modules/,
  36. },
  37. {
  38. test: /\.node$/,
  39. loader: 'node-loader',
  40. },
  41. ],
  42. },
  43. externals: [
  44. nodeExternals(),
  45. ],
  46. plugins: [new webpack.ContextReplacementPlugin(/Sequelize(\\|\/)/, path.resolve(__dirname, '../src'))],
  47. devtool: 'source-map',
  48. };

字符串

展开查看全部

相关问题