用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
欢迎大家多交流讨论哈~
最后[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 未被识别为内部或外部命令