首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法使用webpack 4和babel 7导入soap模块

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

Stack Overflow用户
提问于 2019-06-16 14:06:43
回答 2查看 540关注 0票数 2

我在一个旧的Webpack (v4.34.0) / Vue.js (v2.6.10)项目中更新了Framework7 (v4.4.3)Vue.js (v2.6.10)

我需要在浏览器中使用node-soap库作为soap客户端,但是当运行webpack编译的代码时,这个库的值是未定义的

代码语言:javascript
复制
import soap from 'soap'
console.log('Soap Library Imported: ', soap)
Soap Library Imported: undefined

所有这些都可以在axios库中正常工作。

代码语言:javascript
复制
import axios from 'axios'
console.log('Axios Library Imported: ', axios)
Axios Library Imported: ƒ wrap() {...}

我想我在使用babel时遇到了模块导入问题,但我正在找出问题的所在。

谢谢你的帮助。

.babelrc

代码语言:javascript
复制
{
  "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 (萃取物)

代码语言:javascript
复制
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'),
        ],
      },
   },
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-06-16 14:15:18

可能发生的情况是,node-soap没有默认的导出(请参阅soap.js),而且您也没有导入它的任何指定出口,因此在webpack的树摇动编译过程中,它们被丢弃,您得到的只是一个空块(您可以通过检查webpack生成的包来确认这一点)。

尝试以命名导出的形式直接导入node-soap方法,例如createClient

代码语言:javascript
复制
import { createClient } from 'soap'
票数 1
EN

Stack Overflow用户

发布于 2020-03-16 23:11:44

要使用listen (服务器),这对我起了作用:

代码语言:javascript
复制
import * as soap from 'soap';
soap.listen(...);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56619573

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档