2017-08-03 105 views
1

在我的tsconfig.json当我将compilerOptions.module从'commonjs'更改为'es6'或'esnext'时,对于我的任何实例 ,我得到错误“SyntaxError:Unexpected token import” import * as React from 'react'TypeScript compilerOptions“unexpected token import”

感谢您的帮助

+1

你使用什么浏览器? https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/import#Browser_compatibility – Amy

+0

浏览器是Chrome版本59.0.3071.115(官方版本)(64位) – Falieson

+0

您遗漏了浏览器*名称*。 – Amy

回答

2

由于Saied如何@Amy,Import & Export关键字在JavaScript很新,他们的介绍开始使用新的ES6标准,每个浏览器的实现是不存在的或部分实现。

如在TypeScript documentation中所写的,导入&导出目前与CommonJS/AMD一起使用。

的这两种情况的结合有时的SyntaxError抛出取决于你TSConfig和/或浏览器。

我什么建议

你想用新的ES6非标准

你保持你的浏览器最新的,你指的是@Amy提供的链接了解Import & Export为每个浏览器实施。

你不希望使用新的ES6非标准

你在你的TSConfig文件回来AMDCommonJS。有了这个解决方案,您将需要使用RequireJS管理Import & Export或捆绑使用的WebPack或者Browserify您的打字稿文件。

我的意见的

如果你的代码仅用于学习或为了好玩,你可以留在新ES6非标准。

如果是生产,我建议使用Webpack,但是difficule可以处理但功能非常强大。

+0

如果我使用module =“es6”(或esnext)并且target =“es5”不应该为导入/导出发生转储吗? 是否有关于typecript编译结束和babel transpile拾取的建议? – Falieson

+1

Webpack总是一个很好的建议,不幸的是这是一个MeteorJS项目 – Falieson

+1

@Falieson如果目标是es6,那就是生成的结果。和es5一样。然后你可以通过babel运行它。在工作中,我们使用es5作为目标,因为我们必须针对IE并通过babel运行它,其他原因。如果我们要把它带回es5,没有必要生成es6。 – Amy

相关问题