我正在尝试将PhantomJS与Babel从ES6编译到ES5的脚本一起使用.
对于某些功能,Babel在文件末尾添加了一些辅助函数(比如_asyncToGenerator
和_typeof
)来评估代码.
但是在Phantom中,有一个evaluate(function(){…})
在浏览器上下文中执行的函数,因此它无法访问babel放入的那些辅助函数.
例如,如果我有一个代码:
var page = require('webpage').create(); page.open(url, function(status) { var title = page.evaluate(function() { typeof(document.title); }); });
它编译成
var page = require('webpage').create(); page.open(url, function(status) { var title = page.evaluate(function Executed_in_Browser_Context() { _typeof(document.title); }); }); function _typeof(obj) { return obj && typeof Symbol !== "undefined" && obj.constructor === Symbol ? "symbol" : typeof obj; }
注意typeof
已更改为_typeof
(对于涉及ES6符号的某些功能)
这里,function Executed_in_Browser_Context
它在浏览器上下文中执行,因此它无法访问function _typeof
底部文件中定义的内容.因此导致错误
Can't find variable: _typeof
怎么解决这个?
我尝试复制_typeof
内部Executed_in_Browser_Context
(预编译)但是在编译之后,Babel看到并且认为它可能是我的代码中的其他函数,并且只是将其自身重命名为_typeof2
导致相同的错误.