【发布时间】:2015-08-15 01:02:04
【问题描述】:
如 Where to write and store mongoDB map/reduce functions in java project 中所述 - Eclipse 不喜欢 JavaScript (.js) 文件仅包含以下内容:
function(doc) {
if(doc.somekey) emit(doc._id, doc);
}
关键字function被标记为错误:
标记“函数”的语法错误,此标记后应有标识符
这种形式在 MapReduce 中使用,但它可能不是完全有效的 JavaScript(我不是律师)。有没有办法允许这种形式?
edit 看起来它是一个函数表达式,而不是一个函数语句。 (MDN,ECMA-262)
非解决方案: 根据https://stackoverflow.com/a/11258388/185799“只需添加一个函数名称”,看来节省这些函数的大小并不重要。但是,添加函数名称会导致:
{"error":"compilation_error","reason":"Compilation of the map function in the 'myView' view failed: Expression does not eval to a function."}可能的解决方案?在顶部添加一个函数名称或“module.exports =”,然后在构建阶段使用 grunt/gulp/yeoman 或相关内容将其删除。
1234563这不能回答我的问题,但可以解决它。
【问题讨论】:
-
我(像 Eclipse 一样)很好奇您如何在文件中单独定义一个匿名函数并以这种方式实际使用它。我曾经使用过的任何匿名函数都是在上下文中定义的,它被传递给函数或立即执行,因此它永远不会被自己定义。以这种方式完成后,就没有可以在某处使用它的句柄了。如果此文件还有更多内容,请向我们展示有关此定义的其余上下文。
-
这是wiki.apache.org/couchdb/… 中的映射函数——我认为这里的区别在于它是函数表达式而不是函数语句。也许它需要与“.js”不同的文件后缀!
-
.. 换句话说,它不是“单独在文件中”使用的。同样,“.js”在这里可能不合适
-
相关 CouchDB 问题:issues.apache.org/jira/browse/COUCHDB-1397
标签: javascript eclipse