我的 Node.js 设置(Mocha 和 Chai、Babel7、ES6)

2025-06-08

我的 Node.js 设置(Mocha 和 Chai、Babel7、ES6)

我和 Gojira 编写单元测试

每次我想编写代码时,我都会尝试为我的项目构建一个合适的开发环境。我通常会安装 Babel 来将 ES6/ES7 编译回 ES5,安装 Mocha 和 Chai 进行单元测试,以及安装 Nodemon 来自动重启应用程序。

因此,我决定分享我从零开始搭建 Node 环境的经验。希望这些信息对您有所帮助。

首先,让我们为我们的项目生成一个空的 package.json。

npm init -y
Enter fullscreen mode Exit fullscreen mode

现在,我们可以添加一些开发依赖项。

npm install --save-dev @babel/cli @babel/core @babel/node @babel/register @babel/preset-env chai mocha nodemon
Enter fullscreen mode Exit fullscreen mode

安装后我们的 package.json 应该如下所示:

包.json

Babel 7 包现在有“范围”,因此旧的 babel-cli 变成了@babel /cli。

ES6 和 Node

创建一个 index.js 文件,其中包含一个返回字符串的简单函数,以便我们测试所有内容是否正确。我总是将 index 文件放在 src 文件夹的根目录下。如果您将它放在其他位置,请记得相应地调整 package.json 脚本中的路径。

./src/index.js


const sayHello = _ => "Hello guys!"

console.log(sayHello())
Enter fullscreen mode Exit fullscreen mode

要查看结果,请将以下脚本复制并粘贴到您的 package.json 中。

"start": "nodemon ./src/index.js",
Enter fullscreen mode Exit fullscreen mode

在控制台/终端中输入 npm start 后,您将看到如下内容:

nodemon 正在运行

Nodemon 会监控代码中的每个更改,并在您进行任何更改时自动重新启动应用程序。将 ES6 导出语句添加到 index.js 文件的末尾,然后再次运行该应用程序。

export default sayHello
Enter fullscreen mode Exit fullscreen mode

结果是:

Node 无法识别 ES6 的 export/import 关键字。为了解决这个问题,我们需要使用 Babel 将 export default sayHello 编译成类似 exports.default = sayHello 的形式。

为此,我们需要在项目根目录中创建一个名为 .babelrc 的文件。将以下代码复制并粘贴到该文件中。

{

"presets": ["@babel/preset-env"]

}
Enter fullscreen mode Exit fullscreen mode

接下来,我们还需要调整我们的启动脚本。

"start": "nodemon --exec babel-node ./src/index.js"
Enter fullscreen mode Exit fullscreen mode

测试

好的,我们来写个快速测试看看它是否有效。记住,我们已经安装了 chai 和 mocha,所以无需任何进一步的配置就可以使用它们。

./测试/index.spec.js


import { expect } from "chai"
import sayHello from "../src/index"

describe("index test", () => {
    describe("sayHello function", () => {
        it("should say Hello guys!", () => {

            const str = sayHello();
            expect(str).to.equal("Hello guys!")
        })
    })
})
Enter fullscreen mode Exit fullscreen mode

此外,我们需要在 package.json 中添加一个测试脚本:

"test": "./node_modules/.bin/mocha --compilers js:@babel/register"
Enter fullscreen mode Exit fullscreen mode

关于测试脚本的三个重要事实:

  • 如果您使用 npm install -g 全局安装 mocha,则可以改用“mocha --compilers js: @babel /register”。
  • 由于我们的测试文件位于测试文件夹中,mocha 会自动找到我们的 index.spec.js。
  • --compilers js: @babel /register 告诉 mocha 我们使用的是 ES6,所以它应该处理它。这就是我们安装@babel /register 的原因。

在您的控制台/终端中输入 npm test,您将看到测试通过。

编译到 Dist 文件夹

如果您好奇编译后的 ES5 兼容代码是什么样子,您可以将以下脚本添加到您的 package.json 中。

"build": "babel src --out-dir ./dist --source-maps",

"serve": "node ./dist/index.js",
Enter fullscreen mode Exit fullscreen mode

npm run build 命令会在 dist 文件夹中创建一个已编译的 index.js 文件,npm run serve 命令会运行该文件,而不是 src 文件夹中的原始文件。我们还使用了 --source-maps 选项,以便在调试 ./dist/index.js 时可以看到我们编写的实际 ES6 代码。

调试

我是一名 JS 开发人员,因此我宁愿使用浏览器而不是 IDE 来调试我的代码。

幸运的是,Node.js 允许我们在浏览器中调试应用程序。这是另一个用于 package.json 的脚本。

"debug": "node --inspect-brk ./dist/index.js"
Enter fullscreen mode Exit fullscreen mode

npm run debug 之后您可以看到以下消息。

节点调试

将为您生成的突出显示的字符串附加到此 url:chrome-devtools://devtools/bundled/inspector.html?experiments=true&v8only=true&ws=127.0.0.1:9229/。

然后,将其粘贴到浏览器就完成了。

调试愉快!

结束

就这样吧。下次,我会深入探讨一些有趣的 JS/Python/Rust 编程概念。

如果您遇到困难或者知道更好的方法,请随时发表评论。

感谢阅读。欢迎从此处克隆代码仓库。

鏂囩珷鏉ユ簮锛�https://dev.to/bnorbertjs/my-nodejs-setup-mocha--chai-babel7-es6-43ei
PREV
5 本适合初学者的最佳 Docker 书籍
NEXT
Node 工作者用例