Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/61.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
什么';在CouchDB Map/Reduce JavaScript函数上处理Eclipse错误的最佳方法是什么?_Javascript_Eclipse - Fatal编程技术网

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

什么';在CouchDB Map/Reduce JavaScript函数上处理Eclipse错误的最佳方法是什么?,javascript,eclipse,Javascript,Eclipse,如-Eclipse中所述,它不希望JavaScript(.js)文件只包含以下内容: function(doc) { if(doc.somekey) emit(doc._id, doc); } 关键字函数标记有错误: 令牌“函数”上的语法错误,此令牌后应为标识符 这个表单在MapReduce中使用,但它可能不是完全有效的JavaScript(我不是律师)。有没有办法允许这种形式 编辑它看起来像是函数表达式而不是函数语句。(,) 非解决方案:“只需添加一个函数名”,因为节约这些函数的

如-Eclipse中所述,它不希望JavaScript(
.js
)文件只包含以下内容:

 function(doc) {
   if(doc.somekey) emit(doc._id, doc);
 }
关键字
函数
标记有错误:

令牌“函数”上的语法错误,此令牌后应为标识符

这个表单在MapReduce中使用,但它可能不是完全有效的JavaScript(我不是律师)。有没有办法允许这种形式

编辑它看起来像是函数表达式而不是函数语句。(,)

  • 非解决方案:“只需添加一个函数名”,因为节约这些函数的大小似乎并不重要。但是,添加函数名会导致:
    {“error”:“compilation\u error”,“reason”:“在“myView”视图中编译映射函数失败:表达式不会对函数求值。”}

  • 可能的解决方案?在顶部添加函数名或“module.exports=”,然后在构建阶段使用grunt/gulp/yeoman或其他相关工具将其删除

  • 现在,我实际做的是使用文本形式
    函数匿名(…
    ),然后在调用
    synchronizeWithDb()
    之前进行字符串替换,以
    函数匿名(
    替换
    函数匿名(
    )。这并没有回答我的问题,但可以解决这个问题


您有三个糟糕的选择:

  • 您可以忽略此错误,因为CouchDB可以处理此文件(稍后将对其进行包装以使其有效)
  • 您可以更改文件扩展名,但会丢失语法突出显示、代码完成和错误检查
  • 您可以在“错误”视图中删除该错误。该错误将一直被删除,直到您下次更改该文件或执行完整生成
  • 您可以将Eclipse配置为停止验证文件
  • 有两种方法可以实现#4:

    • 您可以忽略该资源。这使得Eclipse和所有插件都无法看到该文件。这意味着您无法在Eclipse中再对其进行编辑。请使用它
    • 您可以检查每个项目的首选项以获取JavaScript的验证规则。也许您可以排除该文件

    I(如Eclipse)我很好奇,你怎么能在一个文件中单独定义一个匿名函数,并以这种方式使用它。我使用过的任何匿名函数都是在传递给函数或立即执行的上下文中定义的,因此它永远不会自己定义。这样做的话,它就没有可以在某个地方使用的句柄。如果这个文件还有更多内容,那么请向我们展示关于这个定义的其他上下文。它是一个映射函数,如中所示-我认为这里的区别是它是一个函数表达式而不是一个函数语句。也许它需要一个不同于“.js”的文件后缀!换句话说,它不是“在一个文件中单独使用”的。再一次,“.js”在这里可能不合适相关的CouchDB问题:谢谢你的总结。我会稍等一下,看看是否有更好的选择。1.我希望不必忽略错误。2.我目前无法更改扩展名(.js是Lightcoach库所期望的).3.我无法删除此错误-它不会显示在错误视图中。不过,我会寻找一种方法来执行此操作。如果没有更好的解决方案,我会接受此方法。@StevenR.Loomis我找到了另一个选项:尝试配置每个项目的JavaScript验证并排除该文件。谢谢。对我来说,有效的方法是使用正则表达式来删除将名称命名为“anonymous”并从该表单转换,这样我仍然可以得到验证:函数anonymous(doc){if(doc.somekey)emit(doc.\u id,doc);}