Невозможно импортировать модуль soap-npm с webpack 4 и babel 7 - PullRequest
1 голос
/ 16 июня 2019

Я обновил Webpack (v4.34.0) и Babel (v7.4.5) в старом Framework7 (v4.4.3) / Vue.js (v2.6.10) проекте.

Мне нужно использовать библиотеку node-soap в качестве мыльного клиента в моем браузере, но при запуске кода, скомпилированного веб-пакетом, эта библиотека имеет значение undefined

import soap from 'soap'
console.log('Soap Library Imported: ', soap)
Soap Library Imported: undefined

Все отлично работает с axios библиотекой.

import axios from 'axios'
console.log('Axios Library Imported: ', axios)
Axios Library Imported: ƒ wrap() {...}

Я думаю, что у меня проблема с импортом модуля с babel, но я выясняю, где может быть проблема.

Спасибо за вашу помощь.


.babelrc

{
  "presets": [
    ["@babel/preset-env", {
      "modules": "auto",
      "targets": {
        "browsers": [
          "Android >= 5",
          "IOS >= 9.3",
          "Edge >= 15",
          "Safari >= 9.1",
          "Chrome >= 49",
          "Firefox >= 31",
          "Samsung >= 5",
        ],
      },
    }],
  ],
  "plugins": [
    "transform-vue-jsx",
    // "@babel/plugin-transform-runtime",
    "@babel/plugin-syntax-dynamic-import",
  ],
}

webpack.config.js (извлечение)

module.exports = {
  mode: env,
  node: {
    setImmediate: false,
    dgram: 'empty',
    fs: 'empty',
    net: 'empty',
    tls: 'empty',
    child_process: 'empty', 
  },
  module: {
    rules: [
      {
        test: /\.(js|jsx)$/,
        use: 'babel-loader',
        include: [
          resolvePath('src'),
          resolvePath('node_modules/framework7'),
          resolvePath('node_modules/framework7-vue'),
          resolvePath('node_modules/template7'),
          resolvePath('node_modules/dom7'),
          resolvePath('node_modules/ssr-window'),
          resolvePath('node_modules/soap'),
        ],
      },
   },
}

1 Ответ

1 голос
/ 16 июня 2019

Возможно, что node-soap не имеет экспорта по умолчанию (см. soap.js), и вы не импортируете ни один из его именованных экспортов, поэтому они отбрасываются во время компиляции из веб-пакета встряхивание дерева и все, что вы получаете, это пустой кусок (вы можете проверить это, проверив пакет, сгенерированный веб-пакетом).

Попробуйте импортировать методы node-soap напрямую как именованные экспорты, например, createClient:

import { createClient } from 'soap'
...