Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/392.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 角度CLI“;ng e2e“是:ts节点的量角器测试中缺少本地存储_Javascript_Angular_Protractor_Angular Cli_Typescript2.0 - Fatal编程技术网

Javascript 角度CLI“;ng e2e“是:ts节点的量角器测试中缺少本地存储

Javascript 角度CLI“;ng e2e“是:ts节点的量角器测试中缺少本地存储,javascript,angular,protractor,angular-cli,typescript2.0,Javascript,Angular,Protractor,Angular Cli,Typescript2.0,我有一个基于ngrx的Angular2项目,它是用@angular/cli:1.0.0-beta.32.3构建的。 该应用程序本身与官方支持的示例ngrx应用程序有很多共同之处: 我使用package将存储的某些部分与localStorage同步,因此: 在myreducers/index.ts文件(看起来像原始文件)中替换原始文件: const developmentReducer: ActionReducer<State> = compose( storeFreeze,

我有一个基于ngrx的Angular2项目,它是用
@angular/cli:1.0.0-beta.32.3
构建的。 该应用程序本身与官方支持的示例ngrx应用程序有很多共同之处:

我使用package将存储的某些部分与localStorage同步,因此:

在my
reducers/index.ts文件(看起来像原始文件)中替换原始文件:

const developmentReducer: ActionReducer<State> = compose(
  storeFreeze,
  combineReducers
)(reducers);

const productionReducer: ActionReducer<State> = combineReducers(reducers);
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)
[19:25:07]I/direct-直接使用ChromeDriver。。。
[19:25:09]E/launcher-错误:ReferenceError:未定义本地存储
在Object.exports.localStorageSync(/home/myfolder/e2e storage test/node_modules/ngrx store localstorage/src/index.ts:118:77)
反对

我希望避免弄乱节点本地存储之类的东西,因为我不希望此项目仅用于浏览器环境的服务器端渲染


如何解决这个问题

正如人们所预料的那样,这个理由被证明是相当愚蠢的

在一个e2e测试文件中,从应用程序的路由模块导入了路径名。这导致了导入链,包括路由模块中导入的组件等

由于e2e测试文件是使用ts节点执行的,而不是在浏览器上下文中执行的,因此一旦编译器遇到
localStorage
事件,就会抛出错误

在e2e规范文件中删除有问题的导入解决了这个问题

对我来说,结论是:在e2e模块内从应用程序导入任何内容时要小心

beforeLaunch: function() {
  require('ts-node').register({
    project: '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)