Safari中的默认Angular-CLI项目失败 - 罪魁祸首严格模式?

时间:2017-11-06 23:48:59

标签: typescript angular-cli

我安装了最新版本的angular-cli并创建了一个全新的项目(ng new my-app)。这创造了永远时尚的“欢迎来到App"使用Angular徽标和指向英雄之旅,CLI文档和Angular博客的链接。我可以使用Chrome和Firefox在我的Windows机器上本地访问它。

当我尝试通过Browserstack访问同一本地托管的应用程序时,这很奇怪。当我从运行Safari 11的Mac上点击它时,一切都按预期工作。

但是,当我尝试通过运行Safari 10+的Mac设备(例如iPad)访问时,应用程序将无法加载,我收到错误消息:"语法错误:意外的关键字' const&# 39 ;.严格模式"不支持Const声明。错误消息绑定到vendor.bundle.js中的位置(在eval中)。

从我的阅读中可以看出,当启用严格模式时,较旧版本的Safari不能与consts配合使用。但是,我希望有一个解决办法。

其他人如何处理此问题?我不是一个有角度的cli专家,所以如果有一个明显的解决方案,我很抱歉没有看到它。

非常感谢任何协助。

2 个答案:

答案 0 :(得分:4)

我有同样的问题。这似乎是webpack-dev-server(由@ angular / cli在引擎盖下使用)中的一个问题,它使用ES6功能并且没有被编译。

这只是旧版本Safari中的一个问题,但是当您想要在较旧的Safari版本上进行测试时,更新Safari不是一个解决方案。

临时解决方法是使用webpack-dev-server的旧版本安装它并将其手动复制到本地@ angular / cli目录:

yarn add webpack-dev-server@2.7.1 --dev
cp -R ./node_modules/webpack-dev-server ./node_modules/@angular/cli/node_modules/
./node_modules/.bin/ng serve

答案 1 :(得分:3)

较新版本的开发服务器的ES6功能导致了这一点,但更具体地说是实时重新加载功能。

如果您传递--no-live-reload标记,则可以在旧设备上进行测试,而无需降级任何内容。

例如:ng serve --no-live-reload