我使用Rails 4.0.0, 我做资源:预编译 关于ENV - 生产,并有一些错误信息:
rake aborted!
Unexpected token operator «=», expected punc «,» (line: 15816, col: 39, pos: 465171)
Error
at new JS_Parse_Error (/tmp/execjs20130828-23982-1kgxmyu.js:2357:10736)
at js_error (/tmp/execjs20130828-23982-1kgxmyu.js:2357:10955)
at croak (/tmp/execjs20130828-23982-1kgxmyu.js:2357:18665)
at token_error (/tmp/execjs20130828-23982-1kgxmyu.js:2357:18802)
at expect_token (/tmp/execjs20130828-23982-1kgxmyu.js:2357:19025)
at expect (/tmp/execjs20130828-23982-1kgxmyu.js:2357:19163)
at /tmp/execjs20130828-23982-1kgxmyu.js:2357:23402
at /tmp/execjs20130828-23982-1kgxmyu.js:2357:23466
at /tmp/execjs20130828-23982-1kgxmyu.js:2357:20786
at /tmp/execjs20130828-23982-1kgxmyu.js:2357:19536
(in ~/RubymineProjects/Hermes/app/assets/javascripts/application.js.erb) ~/.rvm/gems/ruby-1.9.3-p448/gems/execjs-1.4.0/lib /execjs/external_runtime.rb:68:in `extract_result'
这种结构引发错误:函数searchHelper(myMap,coords, cond = false ) 但没有默认参数命令完成没有退出代码:function searchHelper(myMap,coords, cond )
它是什么?我在哪里可以阅读它?
答案 0 :(得分:5)
如果其他人遇到此问题,您可能已为函数参数设置了默认值,这在javascript代码中是不可能的。
<强> INVALID 强>
function hello(param = true){
...
}
<强> VALID 强>
function hello(param) {
if (typeof param == 'undefined')
param = true;
...
}
答案 1 :(得分:1)
我知道几年前已经回答了这个问题,但是我一直在使用3.2版的Rails应用程序,最近遇到了这个问题。我想添加到Tomáš Dundáček's Answer。事实证明,Javascript中的默认参数具有以下格式:
class AppDefinition:
def __init__(self):
self.App = Flask(__name__, instance_relative_config = True)
self.PlacesProvider = GooglePlacesSearchProvider(
'https://maps.googleapis.com/maps/api/place/findplacefromtext/json',
'my_api_key')
app = AppDefinition()
@app.App.route('/search/phone/<phone>/<language>')
def search_with_phone_number(phone: str, language: str):
resp = app.PlacesProvider.get_by_phone_number(phone, language)
return from_response(resp)
@app.App.route('/search/address/<address>/<language>')
def search_with_address(address: str, language: str):
resp = app.PlacesProvider.get_by_address(address, language)
return from_response(resp)
def from_response(resp: Response):
return json.dumps(resp.json(), ensure_ascii = False)
if __name__ == '__main__':
HOST = 'localhost'
PORT = 5000
app.App.run(HOST, PORT)
是ES6语法功能,在ES5中不可用。就像上面提到的一样,
function hello(param = true) {
...
}
在ES5中有效。根据您在预编译期间使用哪些JavaScript库(例如uglify-js),您的JavaScript文件可能无法正确编译。如果库仅了解ES5,则在预编译期间包括ES6的任何功能都将导致此错误和类似错误。这个问题在this thread on Github中有更多讨论。