Создайте пакет с Webpack, используя сторонние библиотеки UMD (cybersource-rest-client) - PullRequest
0 голосов
/ 03 мая 2020

Я пытаюсь создать библиотеку, которая использует стороннюю библиотеку под названием Cybersource TMS (Visa), используя библиотеку cybersource-rest-client . Когда я работал с этой библиотекой в ​​Nodejs, у меня не было проблем, но мне нужно использовать ее и на стороне клиента (в браузере), но я получаю следующую ошибку при компиляции с Webpack:

ERROR in ./node_modules/cybersource-rest-client/src/index.js
Module not found: Error: Can't resolve 'model/TmsV1InstrumentIdentifiersPaymentInstrumentsGet200ResponseEmbeddedBuyerInformation' in 'C:\Users\MSI\Belcorp\sdk\node_modules\cybersource-rest-client\src'
 @ ./node_modules/cybersource-rest-client/src/index.js 19:4-35645
 @ ./src/providers/cybersource/process-payment.js
 @ ./src/providers/Provider.js
 @ ./src/index.js

ERROR in ./node_modules/cybersource-rest-client/src/index.js
Module not found: Error: Can't resolve 'model/TmsV1InstrumentIdentifiersPaymentInstrumentsGet200ResponseEmbeddedBuyerInformationIssuedBy' in 'C:\Users\MSI\Belcorp\sdk\node_modules\cybersource-rest-client\src'
 @ ./node_modules/cybersource-rest-client/src/index.js 19:4-35645
 @ ./src/providers/cybersource/process-payment.js
 @ ./src/providers/Provider.js
 @ ./src/index.js

ERROR in ./node_modules/cybersource-rest-client/src/index.js
Module not found: Error: Can't resolve 'model/TmsV1InstrumentIdentifiersPaymentInstrumentsGet200ResponseEmbeddedBuyerInformationPersonalIdentification' in 'C:\Users\MSI\Belcorp\sdk\node_modules\cybersource-rest-client\src' @ ./node_modules/cybersource-rest-client/src/index.js 19:4-35645
 @ ./src/providers/cybersource/process-payment.js
 @ ./src/providers/Provider.js
 @ ./src/index.js

ERROR in ./node_modules/cybersource-rest-client/src/index.js
Module not found: Error: Can't resolve 'model/TmsV1InstrumentIdentifiersPaymentInstrumentsGet200ResponseEmbeddedCard' in 'C:\Users\MSI\Belcorp\sdk\node_modules\cybersource-rest-client\src'
 @ ./node_modules/cybersource-rest-client/src/index.js 19:4-35645
 @ ./src/providers/cybersource/process-payment.js
 @ ./src/providers/Provider.js
 @ ./src/index.js

ERROR in ./node_modules/cybersource-rest-client/src/index.js
Module not found: Error: Can't resolve 'model/TmsV1InstrumentIdentifiersPaymentInstrumentsGet200ResponseEmbeddedEmbedded' in 'C:\Users\MSI\Belcorp\sdk\node_modules\cybersource-rest-client\src'
 @ ./node_modules/cybersource-rest-client/src/index.js 19:4-35645
 @ ./src/providers/cybersource/process-payment.js
 @ ./src/providers/Provider.js
 @ ./src/index.js

ERROR in ./node_modules/cybersource-rest-client/src/index.js
Module not found: Error: Can't resolve 'model/TmsV1InstrumentIdentifiersPaymentInstrumentsGet200ResponseEmbeddedEmbeddedInstrumentIdentifier' in 'C:\Users\MSI\Belcorp\sdk\node_modules\cybersource-rest-client\src'
 @ ./node_modules/cybersource-rest-client/src/index.js 19:4-35645
 @ ./src/providers/cybersource/process-payment.js
 @ ./src/providers/Provider.js
 @ ./src/index.js

ERROR in ./node_modules/cybersource-rest-client/src/index.js
Module not found: Error: Can't resolve 'model/TmsV1InstrumentIdentifiersPaymentInstrumentsGet200ResponseEmbeddedLinks' in 'C:\Users\MSI\Belcorp\sdk\node_modules\cybersource-rest-client\src'
 @ ./node_modules/cybersource-rest-client/src/index.js 19:4-35645
 @ ./src/providers/cybersource/process-payment.js
 @ ./src/providers/Provider.js
 @ ./src/index.js

// and many more similar mistakes

Когда Я проверяю библиотеку в каталоге node_modules / и обнаруживаю, что указанный файл имеет следующую структуру:

(function(factory) {
  if (typeof define === 'function' && define.amd) {
    // AMD. Register as an anonymous module.
    define(['ApiClient', 'model/AddNegativeListRequest', 'model/AuthReversalRequest', 'model/AuthorizationOptions', 'model/BillTo', 'model/BuyerInformation', 'model/CapturePaymentRequest', 'model/CardInfo', 'model/CheckPayerAuthEnrollmentRequest', 'model/CreateAdhocReportRequest', 'model/CreateCreditRequest', 'model/CreateDecisionManagerCaseRequest', 'model/CreateInstrumentIdentifierRequest', 'model/CreateInvoiceRequest', 'model/CreatePaymentInstrumentRequest', 'model/CreatePaymentRequest', 'model/CreateReportSubscriptionRequest', 'model/CreateSearchRequest', 'model/DerPublicKey', 'model/Detail', 'model/EmbeddedInstrumentIdentifierRequest', 'model/EmbeddedInstrumentIdentifierResponse', 'model/Error', 'model/ErrorBean', 'model/ErrorFieldBean', 'model/ErrorLinks', 'model/ErrorResponse', 'model/ErrorResponseWithHAL', 
// and many more similar statements
  }
}

В моем файле webpack.config. js Настройки у меня следующие:

const path = require('path');
const HtmlWebPackPlugin = require('html-webpack-plugin');


module.exports = {
  mode: 'development',
  entry: './src/index.js',
  output: {
    path: path.resolve(__dirname, 'dist'),
    filename: 'my-payment-library.js',
    libraryTarget: 'umd'
  },
  module: {
    rules: [
      {
        test: /\.m?js$/,
        exclude: /(node_modules)/,
        use: {
          loader: 'babel-loader',
          options: {
            presets: ['@babel/preset-env']
          }
        }
      }
    ],
  },
  node: {
    fs: 'empty'
  }
};

...