React-酶安装投掷Regeneratorruntime不是定义的错误

发布于 2025-01-21 20:43:43 字数 2961 浏览 1 评论 0原文

我正在尝试测试以下组件:

class SearchComp extends Component {
        
    constructor(props){
                
        super(props);
        this.state = {   
            data: [],
             filter: {
                    category: {
                        value: null
                    },
                    rating: {
                        value: null
                    },
                    year: {
                        value: null
                    }
                },              
            years:['2000','2001','All']
        }
    }
    
    async componentDidMount() {
          var x = null; 
          await API.service()
          .then(response => {                 
            x = response;
          })
          .catch(e => {
              ...                            
          });
          this.setState({state: x});
    }
    
    handleFilters(e){
        var filter = {...this.state.filter}
        if (e.target.value === 'All'){
                filter.year.value = 'All';              
            }
            else {
                filter.year.value = e.target.value;
            }           
        this.setState({filter})
    }
    
    render(){
        

        
    return(
                <select id="comp1" class="xyz" onChange={this.handleFilters}>
                    <option value="Newest">Newest</option>  
                    <option value="Oldest">Oldest</option>
                </select>
                                        
                <select id="comp2" value={this.state.years} onChange={this.handleFilters}>
                    {this.state.years}
                </select>
    )

}
}

const mapStateToProps = (state => {
    return {
        idx_msp: state.reducer.idx_rdc
    };
}); 

export default connect(mapStateToProps, null) (SearchComp);

这是测试:

import SearchComp from '../src/SearchComp.js';
import { shallow, mount } from 'enzyme'
import expect from 'expect'
import React from 'react'
import {Provider} from 'react-redux';
import {connect} from "react-redux";
import rootReducer from '../src/reducers/RootReducer.js'
import {createStore} from 'redux';

describe('SearchComp test suite', () => {
        
    it("test1", done => {
        const store = createStore(
        rootReducer,
        window.__REDUX_DEVTOOLS_EXTENSION__ && window.__REDUX_DEVTOOLS_EXTENSION__()
        );
        

        const wrapper =  mount( <Provider store={store}>< SearchComp /></Provider> );

    });
});

测试在组件中的这一行中错误:

this.setState({filter})

错误抛出:

 ReferenceError: regeneratorRuntime is not defined

我尝试了此处提供的大多数解决方案: babel 6 regeneratorruntime尚未定义,但无效。

I am trying to test the following component:

class SearchComp extends Component {
        
    constructor(props){
                
        super(props);
        this.state = {   
            data: [],
             filter: {
                    category: {
                        value: null
                    },
                    rating: {
                        value: null
                    },
                    year: {
                        value: null
                    }
                },              
            years:['2000','2001','All']
        }
    }
    
    async componentDidMount() {
          var x = null; 
          await API.service()
          .then(response => {                 
            x = response;
          })
          .catch(e => {
              ...                            
          });
          this.setState({state: x});
    }
    
    handleFilters(e){
        var filter = {...this.state.filter}
        if (e.target.value === 'All'){
                filter.year.value = 'All';              
            }
            else {
                filter.year.value = e.target.value;
            }           
        this.setState({filter})
    }
    
    render(){
        

        
    return(
                <select id="comp1" class="xyz" onChange={this.handleFilters}>
                    <option value="Newest">Newest</option>  
                    <option value="Oldest">Oldest</option>
                </select>
                                        
                <select id="comp2" value={this.state.years} onChange={this.handleFilters}>
                    {this.state.years}
                </select>
    )

}
}

const mapStateToProps = (state => {
    return {
        idx_msp: state.reducer.idx_rdc
    };
}); 

export default connect(mapStateToProps, null) (SearchComp);

Here is the test:

import SearchComp from '../src/SearchComp.js';
import { shallow, mount } from 'enzyme'
import expect from 'expect'
import React from 'react'
import {Provider} from 'react-redux';
import {connect} from "react-redux";
import rootReducer from '../src/reducers/RootReducer.js'
import {createStore} from 'redux';

describe('SearchComp test suite', () => {
        
    it("test1", done => {
        const store = createStore(
        rootReducer,
        window.__REDUX_DEVTOOLS_EXTENSION__ && window.__REDUX_DEVTOOLS_EXTENSION__()
        );
        

        const wrapper =  mount( <Provider store={store}>< SearchComp /></Provider> );

    });
});

The test is erroring out at this line in the component:

this.setState({filter})

Error thrown:

 ReferenceError: regeneratorRuntime is not defined

I have tried most of the solutions provided here:Babel 6 regeneratorRuntime is not defined, but nothing works.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

我纯我任性 2025-01-28 20:43:43

未定义的Regeneratorruntime实际上不是的错误。这是使用Babel代码转换的错误(在您的情况下,我想,Babel是在Jest或其他单位测试跑步者中使用的)。

非常相似的情况 babel错误,您需要安装babel依赖关系提供RecenerationRuntime

npm install --save @babel/runtime 
npm install --save-dev @babel/plugin-transform-runtime

并在.babelrc.json文件中指定它们:

{
    "presets": ["@babel/preset-env"],
    "plugins": [
        ["@babel/transform-runtime"]
    ]
}

regeneratorRuntime is not defined is not actually an error from enzyme. That's an error from transformed with babel code (in your case, I suppose, babel is used from jest or other unit tests runner).

Such in very similar cases of that babel error, you need to install babel dependencies that provide regenerationRuntime:

npm install --save @babel/runtime 
npm install --save-dev @babel/plugin-transform-runtime

and specify them in .babelrc.json file:

{
    "presets": ["@babel/preset-env"],
    "plugins": [
        ["@babel/transform-runtime"]
    ]
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文