错误:调用构造函数时缺less新的前缀

我正在尝试在node.js创build一个函数。 以下是相关的代码,当我调用函数时,它给了我错误。

 function ReplacePlaceholders() { return 'success'; } exports.sendMailMsg = function (templateName, receiverEmail, dataPlaceholders) { ReplacePlaceholders(); } 

在node.js中,函数名称是驼峰式的,应该以小写字母开头。 用大写字符开始函数告诉JSHint将函数看作构造函数而不是方法。

这实际上是由JSHint生成的错误,但代码将正确运行。 导致此错误的newcapnewcap 的选项实际上是折旧的,build议禁用它。

关于为什么这个选项甚至在JSHint中的相关信息:

这个选项需要大写构造函数的名字。 使用new操作符的函数大写只是一个约定,可以帮助程序员直观地将构造函数与其他types的函数区分开来,以便在使用这个函数时发现错误。

不这样做不会破坏你的代码在任何浏览器或环境中,但是通过阅读代码将会有点困难 – 如果该函数应该被使用或不使用new 。 这一点很重要,因为如果没有使用新的函数,它将指向全局对象而不是新对象。

您提到的错误消息是一个JSHint错误消息,而不是运行时错误。 这里有一个讨论:

jshint期望新的“前缀”的function

JSHint期望以大写字母开始的函数是对象定义。 您可以忽略该错误,在JSHint中将其禁用,或者重命名您的函数,使其以小写字母开头。

我不知道为什么可能是这样,但是这个错误表明做new ReplacePlaceholders(); 可能会工作。 但是,您可能需要考虑如下内容:

 function ReplacePlaceholders(templateName, receiverEmail, dataPlaceholders) { return 'success'; } exports.sendMailMsg = ReplacePlaceholders;