У меня есть проект Angular2 на основе ngrx и построен с @angular/cli: 1.0.0-beta.32.3
. Приложение само по себе имеет много общего с официально поддерживаемым примером приложения ngrx: https://github.com/ngrx/example-app.Угловой CLI "ng e2e": отсутствует localStorage в тестах транспортира с ts-node
синхронизировать некоторую часть магазина с помощью LocalStorage https://github.com/btroncone/ngrx-store-localstorage пакета, так:
в моем reducers/index.ts
файле (выглядит как оригинальный https://github.com/ngrx/example-app/blob/master/src/app/reducers/index.ts) вместо оригинала:
const developmentReducer: ActionReducer<State> = compose(
storeFreeze,
combineReducers
)(reducers);
const productionReducer: ActionReducer<State> = combineReducers(reducers);
Я получил слегка измененная версия:
const developmentReducer: ActionReducer<State> = compose(
storeFreeze,
localStorageSync(['auth'], true),
combineReducers
)(reducers);
const productionReducer: ActionReducer<State> = compose(
localStorageSync(['auth'], true),
combineReducers
)(reducers);
Работает отлично, никаких проблем.
Вещь I не может запускать проточные испытания e2e с этой установкой. Этот localStorageSync
принимает значение localStorage
браузера. Однако angular-cli's
транспортир использует ts-node
, как указано в protractor.conf.js
:
beforeLaunch: function() {
require('ts-node').register({
project: 'e2e'
});
},
ng e2e
завершается с ошибкой:
[19:25:07] I/direct - Using ChromeDriver directly...
[19:25:09] E/launcher - Error: ReferenceError: localStorage is not defined
at Object.exports.localStorageSync (/home/myfolder/e2e-storage-test/node_modules/ngrx-store-localstorage/src/index.ts:118:77)
at Object.<anonymous> (/home/myfolder/e2e-storage-test/src/app/reducers/index.ts:32:3)
at Module._compile (module.js:570:32)
at Module.m._compile (/home/myfolder/e2e-storage-test/node_modules/ts-node/src/index.ts:406:23)
at Module._extensions..js (module.js:579:10)
at Object.require.extensions.(anonymous function) [as .ts] (/home/myfolder/e2e-storage-test/node_modules/ts-node/src/index.ts:409:12)
Полный отслеживающий доступен здесь: https://gist.github.com/radoslawroszkowiak/17e53b9043264b6d813df2374e8d4dc8.
Я хотел бы избегать испортить вещи, такие как node-localstorage, поскольку я не хочу, чтобы этот проект использовался для серверной рендеринга, только для среды браузера.
Как обойти эту проблему?