首页 > 解决方案 > 为什么 web Worker 的 import axios 不起作用?

问题描述

我正在尝试使用 axios 创建与 web 工作者的 API 请求,这是我的 worker.js

import axios from 'axios'
export default () => {
    self.addEventListener('message', e => {
        if (!e) return;
        let config = e.data;
        let url = config.url;
        let params = config.params;
        setInterval(()=>{
            axios.get(url,{params}).then(res=>{
                postMessage(res);
            })
        },5000);
    });
}

唯一奇怪的是 axios 没有定义,我做错了什么?

这是我的网络工作者代码片段

export default class MonitoringWorker {
    constructor(worker) {
        const code = worker.toString();
        const blob = new Blob(['(' + code + ')()']);
        return new Worker(URL.createObjectURL(blob));
    }
}

import worker from './worker/worker'
import MonitoringWorker from './worker/MonitoringWorker'

    export default class TransactionMonitoring extends Component{
        componentDidMount(){
            console.log({worker})
            this.worker = new MonitoringWorker(worker);
            this.worker.addEventListener('message', e => {
                console.log("RECEIVED DATA",e.data);
            });
            this.worker.postMessage({ url:'xxxx'})
        }
       //restOfcode
    }

标签: reactjsweb-worker

解决方案


您可以使用importScripts

importScripts("https://unpkg.com/axios/dist/axios.min.js");

在您的工作人员文件的顶部。


推荐阅读