用babel和nodemon搭建一个功能齐全的nodejs开发环境

Posted 趣谈前端

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用babel和nodemon搭建一个功能齐全的nodejs开发环境相关的知识,希望对你有一定的参考价值。

"env": "browser": true, "node": true, // 启用node环境 "es6": true // 启用es6语法 , "extends": "eslint:recommended", "globals": "Atomics": "readonly", "SharedArrayBuffer": "readonly" , "parserOptions": "ecmaVersion": 2018, "sourceType": "module" , "rules": "semi": [2, "never"], // 结尾不能有分号 "eqeqeq": "warn", // 要求使用 === 和 !== "no-irregular-whitespace": "warn", // 禁止不规则的空白 "no-empty-pattern": "warn", // 禁止使用空解构模式 "no-redeclare": "warn", // 禁止多次声明同一变量 "quotes": ["error", "single"], // 代码中使用单引号包裹字符串 "indent": ["warn", 2], // 代码缩进为2个空格 "no-class-assign": "error", // 禁止修改类声明的变量 "no-const-assign": "error", // 禁止修改 const 声明的变量 "start": "eslint src && export NODE_ENV=development && nodemon -w src" api.cache(true) const presets = [ [ \'@babel/preset-env\', \'targets\': \'node\': \'current\' ] ] const plugins = [ [\'@babel/plugin-proposal-decorators\', \'legacy\': true ], [\'@babel/plugin-proposal-class-properties\', \'loose\' : true ] ] return presets, plugins "start": "eslint src && nodemon -w src --exec \\"babel-node src\\"", "build": "babel src --out-dir dist"

console.log(req.url, req.method); app.use(require(item).default); "start": "eslint src && export NODE_ENV=development && nodemon -w src --exec \\"babel-node src\\"", "build": "babel src --out-dir dist", "buildR": "node dist", "test": "echo \\"Error: no test specified\\" && exit 1"

res.end(\'hello world!\') if(req.url === \'A\') // A的逻辑 else if(req.url === \'B\') // B的逻辑 else if(req.url === \'C\') // C的逻辑 // ... constructor() // 初始化中间键数组 this.middleware = [] // 维持中间键数组 use(func) this.middleware.push(func) // 创建服务器实例,并执行相应任务 createServer() const server = createServer((req, res) => // 应用中间件 this.middleware.forEach((fn) => fn(req, res)) ) return server // 服务器监听 listen(port = 3000, cb) this.createServer().listen(port, cb) console.log(req.url, req.method) res.end(\'A\') res.end(\'B\') app.use(require(item).default) console.log(`服务器地址:$config.protocol//$config.host:$config.serverPort`))

通过glob的sync方法我们可以遍历routes目录并通过require加载路由文件,然后直接注册到app上,这样就不用我们手动一个个引入了,是不是非常简单呢?(虽然这只是个极简版的服务端封装,对于实际项目需要做进一步的升级和扩展,但是设计思想希望大家能有所收获)

对于负责项目我们可能还会考虑业务逻辑,我们会在service目录下编写我们的服务层代码,在路由文件中使用,也有可能采用到数据库模块等,所以说这些都是比较有意思的实现,后面笔者将带大家继续做一个全栈项目,来感受node开发的魅力。

注: 本文代码已传到github上了,地址:https://github.com/MrXujiang/smart-node-tpl

欢迎大家多交流讨论哈~

最后
如果想获取更多项目完整的源码, 或者想学习更多H5游戏, webpack,node,gulp,css3,javascript,nodeJS,canvas数据可视化等前端知识和实战,欢迎在《趣谈前端》学习讨论,共同探索前端的边界。

[NODEMON]- babel-node 未被识别为内部或外部命令

【中文标题】[NODEMON]- babel-node 未被识别为内部或外部命令【英文标题】:[NODEMON]- babel-node not recognized as internal or external command 【发布时间】:2021-04-25 21:00:18 【问题描述】:

我正在尝试设置一个简单的快速服务器。我正在使用 nodemon 启动我的开发服务器但我的应用程序不断崩溃,因为它无法识别“babel-node”命令。

错误输出是

[nodemon] 2.0.7
[nodemon] to restart at any time, enter `rs`
[nodemon] watching path(s): *.*
[nodemon] watching extensions: js,json
[nodemon] starting `babel-node index.js`
'babel-node' is not recognized as an internal or external command,
operable program or batch file.
[nodemon] app crashed - waiting for file changes before starting...

我的 package.json 脚本是

"scripts": 
    "test": "echo \"Error: no test specified\" && exit 1",
    "startdev": "nodemon --ext js,json  --exec babel-node index.js",
    "start": "babel-node index.js"
  

我的依赖和开发依赖是

"dependencies": 
    "express": "^4.17.1",
    "express-graphql": "^0.12.0",
    "graphql": "^15.4.0",
    "uuid": "^8.3.2"
  ,
  "devDependencies": 
    "@babel/cli": "^7.12.10",
    "@babel/core": "^7.12.10",
    "@babel/node": "^7.12.10",
    "@babel/plugin-proposal-object-rest-spread": "^7.12.1",
    "@babel/preset-env": "^7.12.11",
    "nodemon": "^2.0.7"
  

我尝试在没有 nodemon 的情况下使用常规 node 命令对其进行测试,它按预期运行


$ npm run start

> dev_forum@1.0.0 start
> babel-node index.js

Server is up...

我的文件夹结构在下面

enter image description here

index.js 的内容是

const express = require("express");


const app = express();

app.listen(() => 
    console.log("Server is up...")
)

我也尝试删除我的 node_modules 和 package-lock.json 文件并重新安装,但仍然崩溃..

(*这是我的第一个问题;))

【问题讨论】:

【参考方案1】:

我遇到了同样的问题并以这种方式解决了:

"scripts": 
    "start": "babel-node src/index.js",
    "dev"  : "nodemon --exec npm start"
  

在终端运行

npm run dev

【讨论】:

【参考方案2】:

以上步骤都不适合我。我改用纱线。 删除你的 package-lock.json 然后做:纱线 这将添加依赖项,然后您可以运行它,很可能使用 yarn run dev (当然这取决于你在 package.json 上的脚本)。

【讨论】:

【参考方案3】:

删除您的 node_modules 并按照以下步骤操作:

 npm install --save-dev @babel/core @babel/cli @babel/preset-env @babel/node

然后,检查这些文件是否存在:

node_modules/.bin/babel-node

node_modules/.bin/babel-node.cmd - 仅限 Windows

node_modules/@babel/node/bin/babel-node.js

如果一切看起来不错,添加到 package.json:

"start": "nodemon --exec babel-node index.js",

【讨论】:

我已经这样做了,但错误仍然存​​在...错误:需要 Babel "^7.0.0-0",但加载了 "6.26.3".. 所以我通过还原解决了它回到 babel 版本 6 ... "devDependencies": "babel-cli": "^6.26.0", "babel-core": "^6.26.3", "babel-node": "^0.0.1 -security”,“babel-preset-env”:“^1.7.0”,“nodemon”:“^2.0.7” 还是同样的问题?尝试将您的 nide 版本恢复为 14 或尝试安装 nvm 并检查问题是否不是特定于节点版本。 以前我使用的是节点 v15,但使用的是节点 14.15.4,但我仍然遇到同样的错误。但我发现问题出在我的 babel 插件和预设上。我使用的是 @ babel/preset-env 和 @babel/plugin-proposal-object-rest-spread.. 我分别测试了每个,但仍然得到相同的错误。我通过使用以前版本的 babel-preset-env 和 babel-plugin-transform-object-rest-spread 包解决了这个问题。这些适用于 babel v6 和 v7 太好了!是的,看起来版本问题只是因为安装似乎很好,但很高兴听到你解决了它。 当我使用“npm start”时它对我不起作用,但当我使用“yarn start”时它很好

以上是关于用babel和nodemon搭建一个功能齐全的nodejs开发环境的主要内容,如果未能解决你的问题,请参考以下文章

[NODEMON]- babel-node 未被识别为内部或外部命令

nodemon添加babel支持

nodemon,babel-node:如何设置环境变量?

错误:使用带有 babel 7 的 nodemon 时监听 EADDRINUSE

TypeScript 服务端热更新

TypeScript 服务端热更新