Путь импорта отличается, когда служба развернута в AWS lambda с использованием бессерверной инфраструктуры - PullRequest
0 голосов
/ 19 декабря 2018

При развертывании функции без сервера в AWS появляется сообщение «Не удается найти модуль« ../knexfile »».Этот путь импорта работает, когда я работаю без сервера.Однако при развертывании в AWS все пакеты включаются на корневом уровне, поэтому путь импорта не является правильным.Когда я изменяю его на «knexfile» вместо «../knexfile», он работает при развертывании, но не при локальном запуске.Что я могу сделать, чтобы путь был таким, каким он должен быть автоматически?

Я бы хотел, чтобы путь автоматически определялся при развертывании в AWS или при локальном тестировании.

1 Ответ

0 голосов
/ 20 декабря 2018

Я использовал пакет serverless-webpack npm для решения проблемы.Это оказалось моим файлом webpack.config.js:

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

module.exports = {
  entry: slsw.lib.entries,
  target: 'node',
  mode: slsw.lib.webpack.isLocal ? 'development': 'production',
  optimization: {
    // We no not want to minimize our code.
    minimize: false
  },
  performance: {
    // Turn off size warnings for entry points
    hints: false
  },
  devtool: 'nosources-source-map',
  externals: [nodeExternals(),
    {
      'sqlite3': 'sqlite3',
      'mariasql': 'mariasql',
      'mssql': 'mssql',
      'mysql': 'mysql',
      'mysql2': 'mysql2',
      'mssql/package.json': 'mssql/package.json',
      'mssql/lib/base': 'mssql/lib/base',
      'oracle': 'oracle',
      'strong-oracle': 'strong-oracle',
      'oracledb': 'oracledb',
      'pg-native': 'pg-native',
      'pg-query-stream': 'pg-query-stream',
      'tedious': 'tedious'
    }],
  module: {
    rules: [
      {
        test: /\.js$/,
        exclude: /node_modules/,
        use: [
          {
            loader: 'babel-loader'
          }
        ],
      }
    ]
  },
  output: {
    libraryTarget: 'commonjs2',
    path: path.join(__dirname, '.webpack'),
    filename: '[name].js',
    sourceMapFilename: '[file].map'
  }
}
...