无法使用webpack 4和babel 7导入soap-npm模块

e5nqia27  于 2022-12-08  发布在  Babel
关注(0)|答案(2)|浏览(152)

我更新了旧的Framework7 (v4.4.3)/Vue.js (v2.6.10)项目中的Webpack (v4.34.0)Babel (v7.4.5)
我需要在浏览器中使用node-soap库作为soap客户端,但在运行webpack编译的代码时,此库的值为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'),
        ],
      },
   },
}
xn1cxnb4

xn1cxnb41#

可能发生的情况是node-soap没有默认导出(参见soap.js),并且您没有导入它的任何命名导出,因此它们在webpack的tree shaking编译期间被丢弃,您得到的只是一个空块(您可以通过检查webpack生成的包来确认这一点)。
尝试将node-soap方法直接导入为命名导出,例如createClient

import { createClient } from 'soap'
sg3maiej

sg3maiej2#

要使用listen(server),我可以这样做:

import * as soap from 'soap';
soap.listen(...);

相关问题