gpt4 book ai didi

node.js - 文件更改时转译 ES6 并启动 Express 应用程序

转载 作者:太空宇宙 更新时间:2023-11-03 22:22:39 25 4
gpt4 key购买 nike

我正在开发一个 Express 应用程序。该代码使用了 ES6 import 语句,因此需要通过 ES5 代码中的 Babel 进行转译,以便可以在 Node 上运行。 ES6源码存放在我的src目录,编译后的代码放在我的dest中目录。

我想要一个可以运行的 npm 命令来监视我的 src 中的任何更改目录,将项目转译为 dest ,然后重新启动 Express 应用。

下面是我到目前为止的解决方案(我运行 npm run server:watch )。它使用 chokidar-cli执行server:buildserver:run每当我的 src 中任何 js 文件发生更改时都会执行脚本目录。这工作得很好,只是当代码再次转译时 Express 应用程序不会死掉,所以当我尝试运行 server:watch 时,我收到“端口正在使用”异常。再次。

// package.json
"scripts": {
"server:clean": "rm -f dist/*",
"server:build": "npm run server:clean && ./node_modules/.bin/babel ./src --experimental --source-maps-inline -d ./dist",
"server:run": "nodemon dist/app.js --watch",
"server:watch": "chokidar 'src/*.js' -c 'npm run server:build && npm run server:run'"
}

我走的路正确吗?解决此类问题的最佳方案是什么?

(为了澄清起见,我正在谈论转译服务器端代码,因此 webpack 或任何其他模块 bundler 在这里都不合适)

最佳答案

nodemon 正在监视您的 dist 文件,并且永远不会终止。使用监视脚本,每次文件发生更改时,您都会启动 nodemon第二个实例,因此会出现“端口正在使用”错误。

您需要启动nodemon一次,并在监视脚本运行时保持在后台运行。使用 https://github.com/mysticatea/npm-run-all 最容易完成此操作。 .

通过运行安装它:

npm install npm-run-all --save-dev

在命令行上。

然后您将脚本编辑为:

// package.json
"scripts": {
"server:clean": "rm -f dist/*",
"server:build": "npm run server:clean && ./node_modules/.bin/babel ./src --experimental --source-maps-inline -d ./dist",
"server:run": "nodemon dist/app.js --watch",
"server:watch": "chokidar 'src/*.js' -c 'npm run server:build'",
"server:dev": "run-p server:run server:watch"
}

然后,您只需在命令行上运行 npm run server:dev 即可通过 nodemon 启动您的服务器,并启动监视/重建过程,所有这一切都一劳永逸命令。

<小时/>

旁注:如果您在 Windows 上进行开发,则无法在脚本中使用单引号,必须使用双引号,并在 JSON 中使用 \" 转义.

关于node.js - 文件更改时转译 ES6 并启动 Express 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52269009/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com