处理CouchDB Map/Reduce JavaScript函数上的Eclipse错误的最佳方法是什么?

What's the best way to handle Eclipse errors on CouchDB Map/Reduce JavaScript functions?

本文关键字:错误 Eclipse 最佳 方法 是什么 Map CouchDB Reduce 函数 JavaScript 处理      更新时间:2023-09-26

正如在java项目中编写和存储mongoDB map/reduce函数的地方所指出的那样- Eclipse不喜欢JavaScript (.js)文件只包含以下内容:

 function(doc) {
   if(doc.somekey) emit(doc._id, doc);
 }

关键字function被错误标记:

标记"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."}

  • 可能的解决方案?添加一个函数名或"模块"。在顶部的exports = ",然后在构建阶段删除它,使用grunt/gulp/yeoman或相关的东西。

  • 现在,我实际做的是使用文字形式function anonymous(...,然后在调用synchronizeWithDb()之前做一个字符串替换,用function(替换function anonymous(。这并没有回答我的问题,但可以解决它。

你有三个糟糕的选择:

  1. 你可以忽略这个错误,因为CouchDB可以处理这个文件(它稍后会包装它以使其有效)。
  2. 你可以改变文件扩展名,但你会失去语法高亮,代码完成和错误检查。
  3. 在错误视图中删除错误。它将一直被删除,直到您下次更改文件或进行完整构建。
  4. 您可以将Eclipse配置为停止验证文件。
有两种方法可以实现#4:
  • 可以忽略该资源。这使得该文件对Eclipse和所有插件不可见。这意味着您不能再在Eclipse中编辑它。使用资源过滤器
  • 您可以检查JavaScript的验证规则的每个项目首选项。也许你可以排除这个文件。