【发布时间】:2017-03-12 19:21:09
【问题描述】:
由于 babel 操作的某些限制,我需要编写解决方法代码以使我的项目的一部分在被它转译时能够正常工作。我想让这段代码有条件,所以它只有在被 babel 转译后才运行(因为在本机 ES6 环境中它是不必要的)。有没有办法做到这一点?
【问题讨论】:
-
你想使用特征检测(检查它是否是一个真正的ES6环境)还是你想让babel在编译时插入一些特殊的代码?也许您应该发布您的解决方法(甚至可能是代码本身),以便我们更好地帮助您。
-
@Bergi 我正在尝试解决
eval函数无法访问在模块范围内定义的符号的错误。 -
@PeriataBreatta:通常你必须假设变量会被重命名。如果您必须使用某种 eval,请使用
Function:var f = new Function('var1, var2', '<code>'); f(var1, var2)。这样一来,Babel 对var1和var2所做的事情就无关紧要了。 -
为什么不使用
eval()发布实际问题,然后您可以征求实际问题的答案而不是解决方法。 -
@jfriend00 - 问题是我有许多类被导入到我使用
import { name1, name2, ... } from "source"语法调用eval的模块中。eval正在执行的代码需要能够引用那些,但不能因为它们(正如上面的 Felix 有用地评论)被 Babel 重命名,而eval不知道重命名。我没有发布关于eval问题的问题,因为已经有另一个问题,Babel 开发人员基本上表示没有实际的解决方案。
标签: javascript ecmascript-6 babeljs feature-detection