【问题标题】:What's the best way to handle Eclipse errors on CouchDB Map/Reduce JavaScript functions?处理 CouchDB Map/Reduce JavaScript 函数上的 Eclipse 错误的最佳方法是什么?
【发布时间】: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”在这里可能不合适

标签: javascript eclipse


【解决方案1】:

你有三个不好的选择:

  1. 您可以忽略该错误,因为 CouchDB 可以处理此文件(稍后会对其进行包装以使其有效)。
  2. 您可以更改文件扩展名,但随后会丢失语法高亮显示、代码完成和错误检查。
  3. 您可以在错误视图中删除错误。在您下次更改文件或进行完整构建之前,它将一直被删除。
  4. 您可以配置 Eclipse 以停止验证文件。

#4有两种实现方式:

  • 您可以忽略该资源。这使得该文件对 Eclipse 和所有插件不可见。这意味着您不能再在 Eclipse 中对其进行编辑。为此请使用 Resource Filters
  • 您可以检查每个项目的首选项以了解 JavaScript 的验证规则。也许您可以排除该文件。

【讨论】:

  • 感谢您的总结。我会坚持一点,看看是否有更好的选择。 1. 我希望不必忽略这个错误。 2.我目前无法更改扩展名(LightCouch库需要.js)。 3. 我无法删除错误 - 它没有显示在错误视图中。我会寻找一种方法来做到这一点。如果没有更好的解决方案,我会接受。
  • @StevenR.Loomis 我找到了另一个选项:尝试配置每个项目的 JavaScript 验证并排除文件。
  • 谢谢。对我有用的是使用正则表达式删除名称“匿名”并从此表单转换,这样我仍然可以得到验证: function anonymous(doc) { if(doc.somekey) emit(doc._id, doc); }
猜你喜欢
  • 2012-06-15
  • 1970-01-01
  • 2015-06-12
  • 2017-11-13
  • 2017-12-26
  • 2011-09-22
  • 2020-06-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多