如何使用ES2015代码在Visual Studio 2015 for JSX中正确突出显示语法?
如果删除import
和export
关键字,效果很好:
我刚刚更新到Visual Studio 2015企业更新1,但仍然保持不变。
最佳答案
更新(2017-02)
自v1.2以来,Visual Studio节点工具(NTVS)一直在使用Salsa分析引擎,并且使用NTVS可能是JSX支持阻力最小的途径。
https://github.com/Microsoft/nodejstools
阅读(并赞扬)此答案以获取更多详细信息:https://stackoverflow.com/a/41996170/9324
原始答案
我遇到了同样的问题,找到了两种解决方案-一种使用ReSharper,另一种修改Visual Studio外部Web工具。
解决方案1
在ReSharper 10中:
重新加载解决方案后,红色的波浪形对我消失了。但是,JSX的语法高亮不起作用。我在
render
函数中声明的任何元素的开头没有正确的颜色-但这很容易让我忽略。我还应该提到javascript文件必须具有 .js 扩展名。如果给他们扩展名 .jsx 扩展名,则在您的第一个import语句上会出现红色弯曲。错误消息将为
JSX Parser: illegal import declaration
。 (可以使用下面的解决方案2解决此问题)更新:感谢@SntsDev提供的解决方法
有一种避免将 .jsx 文件命名为 .js 的方法:
在Visual Studio中使用
解决方案2
好奇心使我变得更好,我想探讨是否存在非ReSharper解决方案。 Visual Studio使用名为
react-server
的本地运行的节点服务器模块来动态解析JSX。该模块可以在这里找到:C:\Program Files (x86)\Microsoft Visual Studio
14.0\Common7\IDE\Extensions\Microsoft\Web Tools\External\react-server
Visual Studio 2015 Update 3的更新
感谢 @TheQuickBrownFox 的评论/更新。
对于Update 3,
react-server
命令的位置现在位于此文件中:C:\Program Files (x86)\Microsoft Visual Studio
14.0\Web\External\vs-task-server\react-commands.js
进一步检查上述文件夹中的
server.js
或react-commands.js
文件,还有一个名为transformJsxFromPost
或transformJsx
的函数。此方法包含以下行:var transformed = reactTools.transformWithDetails(code, { elementMap: true });
。这是对react-tools
模块(https://www.npmjs.com/package/react-tools)的引用,该模块具有更多可用于解析ES6的选项。所以:
var transformed = reactTools.transformWithDetails(code, { elementMap: true });
var transformed = reactTools.transformWithDetails(code, { elementMap: true, es6module: "--es6module", harmony: "--harmony" });
请注意
--es6module
和--harmony
标志的添加,它们指示react-tools
将传入代码视为ES6。 在Visual Studio中的
.jsx
文件应该不再在ES6代码上带有红色花样。 注意:
server.js
文件的更改是否会影响非ES6代码。因此,实现风险自负。 react-tools
中react-server
的使用很酷/很有趣。 更新:由于@NickDewitt,他似乎能够完成这项工作:https://stackoverflow.com/a/36321109/9324 关于visual-studio-2015 - Visual Studio 2015 JSX/ES2015语法突出显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37564786/