有没有办法在Javascript(节点)中“编译”或检测拼写错误?

时间:2017-09-19 04:26:43

标签: javascript node.js validation compiler-errors

我知道这很难,因为Javascript的工作方式和“一切”都可能。

但是我很累,错误经常发生,直到我运行我的代码并且一切崩溃或返回错误都没有注意到,因为我在变量或函数中写了一个拼写错误。

我担心崩溃是我能想到的最好的,一些错误可能不会立即引起注意,并发送一个“有效”的未定义值,导致一些可能潜入生产的细微错误。

是否有任何工具可以帮助您查看您正在调用未找到的函数或使用未声明的变量或类似的函数?

在我测试我的功能之前帮助我“编译”并检查代码是否正常的东西。

2 个答案:

答案 0 :(得分:2)

你无法编译JavaScript,但你有选择:

  • ESLint - linter是一种工具,可以为您提供代码洞察,有时甚至是快速修复。 ESLint是最常见和最灵活的,它与最受欢迎的编辑器集成。如果你想使用纯JavaScript,这是唯一的选择。
  • Flow - JavaScript的静态类型检查器。与TypeScript不同,Flow扩展JavaScript而不是单独的语言。如果你不修改你的JavaScript代码,那么Flow检查器仍然可以提供一些见解(如果我没有记错的话),但标准的 modus operandi 是用类型注释来装饰你的JavaScript。
  • TypeScript - TypeScript是一种单独的语言,它建议是一套超级JavaScript。在Flow上开始使用现有的代码库比使用它更难,即使这不是不可能的。如果你在这里讨论Reddit和HackerNews的讨论,你会发现TypeScript比Flow更受欢迎。
  • 使用好的编辑器。实际上,我认为人们有时会低估编辑器在代码质量方面的重要性。 - WebStorm毫无疑问是胜利者。代码洞察力,特别是重构选项是无与伦比的。恕我直言VS Code还有很多要赶上来但现在是最好的免费选择。 VS Code具有这个简洁的功能,即使您不使用TypeScript,它也会使用TypeScript进行类型检查。我认为VS Code及其扩展最终会赶上WebStorm。

我的个人建议是:如果可能,请使用TypeScript。否则,请使用带有ESLint的现代JS(ES201 *)和大量单元测试。不使用TypeScript使单元测试更加重要。我不会使用Flow,因为当Facebook意识到他们不会在这方面赢得微软时,它的开发和支持可能会停止。对于大型项目,请使用WebStorm。对于较小的,请使用WebStorm或VS Code。

答案 1 :(得分:0)

在我的NodeJS项目中,ESLint发现了JSLint和JSHint都没有的错别字。它也适用于浏览器javascript。

要在NodeJS中安装,请遵循the directions,例如在终端:

npm install eslint --save-dev

您可以使用以下方法初始化首选项文件:

./node_modules/.bin/eslint --init

或使用以下偏好设置将文件.eslintrc.js放入应用的根文件夹中:

module.exports = {
  "env": {
    "browser": false,
    "commonjs": true,
    "es2021": true,
    "node": true
  },
  "extends": "eslint:recommended",
  "parserOptions": {
    "ecmaVersion": 12
  },
  "rules": {
  }
};

检查错别字是此默认配置的一部分:

这就是配置的一部分(请参见documentation):

禁止未声明的变量(no-undef) 配置文件中的“ extends”:“ eslint:recommended”属性启用 这条规则。

然后使用以下命令运行ESLint:

./node_modules/.bin/eslint *.js

我将其添加为将代码发送到生产服务器之前的步骤。您也可以将其添加为git pre-commit hook,也可以添加为发布到npm之前的步骤。