Почему я получаю модуль webpackMissingModule с модулем jwks-rsa? - PullRequest
1 голос
/ 07 ноября 2019

Я написал модуль машинописного текста, который использует пакет jwks-rsa npm.

module.ts

const jwksClient = require('jwks-rsa');
const client = jwksClient({
  ...myoptions
});

export myfunc = () => {
  // do something with jwksClient
}

, затем в моем обработчике .ts

import {myfunc} from './handler.ts'

....
myfunc()
....

При тестировании module.ts с помощью jest я не получаю никаких ошибок, и все в порядке.

Проект Typescript был подготовлен с использованием:

  serverless create --template aws-nodejs-typescript

Проблема заключается в том, что после того, как я собрал машинопись с помощью веб-пакета, когда яЗапустите маршрут приложения, использующий приведенный выше код handler.ts -> myFunc (). Я получаю следующую ошибку:

 { Error: Cannot find module './JwksClient'
at webpackMissingModule (webpack-internal:///./node_modules/jwks-rsa/lib/index.js:3:83)
at eval (webpack-internal:///./node_modules/jwks-rsa/lib/index.js:3:170)

В /jwks-rsa/lib/index.js:3:170:

var _JwksClient = require('./JwksClient');

Полагаю, мне нужно каким-то образом настроить webpack.config.js ... но пока не иметь никакой подсказки ...

webpack.config.js

const path = require('path');
const slsw = require('serverless-webpack');
const nodeExternals = require('webpack-node-externals');


module.exports = {
  context: __dirname,
  mode: slsw.lib.webpack.isLocal ? 'development' : 'production',
  entry: slsw.lib.entries,
  devtool: slsw.lib.webpack.isLocal ? 'cheap-module-eval-source-map' : 'source-map',
  resolve: {
    extensions: ['.mjs', '.json', '.ts'],
    symlinks: false,
    cacheWithContext: false,
  },
  output: {
    libraryTarget: 'commonjs',
    path: path.join(__dirname, '.webpack'),
    filename: '[name].js',
  },
  target: 'node',
  externals: [nodeExternals()],
  module: {
    rules: [
      // all files with a `.ts` or `.tsx` extension will be handled by `ts-loader`
      {
        test: /\.(tsx?)$/,
        loader: 'ts-loader',
        exclude: [
          [
            path.resolve(__dirname, 'node_modules'),
            path.resolve(__dirname, '.serverless'),
            path.resolve(__dirname, '.webpack'),
          ],
        ],
        options: {
          transpileOnly: true,
          experimentalWatchApi: true,
        },
      },
    ],
  },
};

tsconfig.js

{
  "compilerOptions": {
    "lib": ["es2017"],
    "removeComments": true,
    "moduleResolution": "node",
    "noUnusedLocals": true,
    "noUnusedParameters": true,
    "sourceMap": true,
    "target": "es2017",
    "outDir": "lib",
  },
  "include": ["./**/*.ts", "env.local.js"],
  "exclude": [
    "node_modules/**/*",
    ".serverless/**/*",
    ".webpack/**/*",
    "_warmup/**/*",
    ".vscode/**/*"
  ]
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...