汇总包axios,无法使用

时间:2018-09-25 06:32:05

标签: node.js axios rollup

在项目中使用Axios,然后使用汇总将其打包。

在浏览器端,这很正常。但是该错误是在nodejs端报告的。

错误信息:

calling

我创建了一个演示,供您查看:rollup-axios-error-demo

axios源代码区分运行环境的代码为:

node test\test.js
error
ReferenceError: XMLHttpRequest is not defined
    at dispatchXhrRequest (D:\Project\NodeJs\rollup-axios-error-demo\dist\demo.js:684:21)
    at new Promise (<anonymous>)
    at xhrAdapter (D:\Project\NodeJs\rollup-axios-error-demo\dist\demo.js:676:12)
    at dispatchRequest (D:\Project\NodeJs\rollup-axios-error-demo\dist\demo.js:1082:12)
    at process._tickCallback (internal/process/next_tick.js:68:7)
    at Function.Module.runMain (internal/modules/cjs/loader.js:745:11)
    at startup (internal/bootstrap/node.js:266:19)
    at bootstrapNodeJSCore (internal/bootstrap/node.js:596:3)

但是包装后变成:

function getDefaultAdapter() {
  var adapter;
  if (typeof XMLHttpRequest !== 'undefined') {
    // For browsers use XHR adapter
    adapter = require('./adapters/xhr');
  } else if (typeof process !== 'undefined') {
    // For node use HTTP adapter
    adapter = require('./adapters/http');
  }
  return adapter;
}

导致XMLHttpRequest在nodejs端实例化

1 个答案:

答案 0 :(得分:2)

万一有人偶然发现这个问题,我遇到了同样的问题,并通过在使用 axios 的任何文件中将 import axios from 'axios' 切换到 const axios = require("axios") 来解决它。