javascript - 通天插件 : How to insert a sibling node

标签 javascript plugins babeljs babel-plugin babel-babylon

似乎 path.insertAfter()、path.insertBefore()、path.unshiftContainer() 和 path.pushContainer() 只能与语句一起使用。如何插入不是语句的节点?

就我而言,我正在编写一个 babel jsx 插件,并且尝试插入一个同级节点,它是一个 JSXExpressionContainer。当我这样做时,我收到以下错误:

TypeError:BlockStatement 的属性 body[0] 期望节点的类型为 ["Statement"],但却得到了“JSXExpressionContainer”

如何解决这个问题?

最佳答案

来自文档here :

FunctionDeclaration(path) {
  path.insertBefore(t.expressionStatement(t.stringLiteral("Because I'm easy come, easy go.")));
  path.insertAfter(t.expressionStatement(t.stringLiteral("A little high, little low.")));
}

查看您的错误,确保您的类型正确。只需检查 babel 类型 here并查看每种类型需要哪些参数。

关于javascript - 通天插件 : How to insert a sibling node,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55131970/

相关文章:

javascript - !function(){ }() 与 (function(){ })()

javascript - SEO 和大量用于搜索功能的表单/Javascript 链接

javascript - 一些浏览器无法识别通过 Javascript 添加的元标记

C#:将 "Class Library"项目用于插件

ecmascript-6 - 我如何使用 Electron 编译?

javascript - 如何从 babel-core 中获取转译后的字符串?

javascript - 使用 babel-preset-env 将 polyfill 作为导入语句更好,还是将它们添加到 webpack.config.js 的条目中更好?

javascript - 使用箭头键移动对象的 Html 和 java 脚本?

spring - Grails3 Spring Security Plugin RequestMap模式不起作用

java - Intellij IDEA 中的 2 个 java 项目有什么区别? - 无法刷新 Gradle