首页 > 解决方案 > 无法在 webdriverio 测试文件中导入 redux 存储

问题描述

我正在尝试导入我的 redux 商店,以便确保正在访问并正确设置商店,但尝试导入 redux 商店会给我以下错误:

 ERROR: Unexpected token import
firefox
/Users/Name/Desktop/project/internal-dashboard/dashboard/src/store.js:1
(function (exports, require, module, __filename, __dirname) { import rootReducer from './reducers/rootReducer';
                                                              ^^^^^^

Syntax    at createScript (vm.js:80:10)
    at Object.runInThisContext (vm.js:139:10)
    at Module._compile (module.js:607:28)
    at Object.Module._extensions..js (module.js:654:10)
    at Module.load (module.js:556:32)
    at tryModuleLoad (module.js:499:12)
    at Function.Module._load (module.js:491:3)
    at Module.require (module.js:587:17)
    at require (internal/module.js:11:18)
    at Object.<anonymous> (/Users/Name/Desktop/project/internal-dashboard/dashboard/test/login.js:2:15)

不知道为什么它告诉我这是一个意外的令牌。该应用程序在我启动时可以正常运行,那么为什么在我运行 webdriverio 测试时,它在存储文件中使用的导入令牌有问题?

这是商店文件:

import rootReducer from './reducers/rootReducer';
import { createStore, applyMiddleware } from 'redux';
import thunk from 'redux-thunk';
import { composeWithDevTools } from 'redux-devtools-extension';


const store = createStore(
    rootReducer,
    composeWithDevTools(applyMiddleware(thunk))
);

export default store;

这是我的登录测试

let assert = require('assert');
import store from '../src/store';

describe("Login Page", () => {
    console.log(store.getState());
    it('should tell user to enter a username', () => {
        browser.url('./');
        let loginHeader = $('p=SIGN IN');
        loginHeader.waitForExist(20000);

        browser.setValue('#username', '');
        browser.setValue('#password', '');
        browser.click('.ui.button');

        let enterUsernameDiv = $('div=Please enter a username');
        enterUsernameDiv.waitForExist(10000);
    });
}

标签: reactjsreduxwebdriver-io

解决方案


正如redux网站上的安装指南中提到的那样

请注意,与 Redux 本身不同,Redux 生态系统中的许多包不提供 UMD 构建,因此我们建议使用 Webpack 和 Browserify 等 CommonJS 模块捆绑器以获得最舒适的开发体验。

在没有反应的节点中单独使用 redux 时执行以下操作将解决问题

import { createStore, applyMiddleware } from 'redux';

成为

const { createStore, applyMiddleware } = require('redux');

推荐阅读