|-client
|-server
|--bin // 可执行文件目录
|--app.js
cd server
npm init -y
// -y
以默认值初始化npm i -S koa
//安装项目依赖koaconst koa = require('koa'); const app = new koa(); app.use((ctx, next) => { ctx.body = '测试测试测试'; next(); }) app.listen(3000, 'localhost', () => { console.log('Server is running!') }) app.on('error', err => { log.error('server error', err) });
方式一:cli
server
下,开启命令行,运行node app.js
方式二:scripts
server/package.json
文件的scripts
编写"start": "node app.js"
,然后在项目路径server
下,开启命令行npm start
方式三:编辑器vs code
server/app.js
文件内,f5
选择Node.js
运行环境(必须聚焦在可执行文件中)方式四:vs code创建launch.json文件
program": "${workspaceFolder}/app.js",
改为program": "${workspaceFolder}/server/app.js"即可使用vs code运行可执行文件是调试运行,可以在vs code中打断点,页面请求时,进行调试。
./bin
,app.js
只是服务端的配置// server/app.js const koa = require('koa'); const app = new koa(); app.use((ctx, next) => { ctx.body = '测试测试测试'; next(); }) app.on('error', err => { log.error('server error', err) }); module.exports = app;
// server/bin/index.js const app = require('../app'); const Server = require('../config/server'); const {host, port} = Server; app.listen(port, host, () => { console.log(`server is running at http://${host}:${port}`); })
// 新建server/config/server.js module.exports = { port: 3000, host: 'localhost' }
如果修改了server/app.js
中
app.use((ctx, next) => { ctx.body = '测试测试测试1111'; // 初始值为ctx.body = '测试测试测试'; next(); })
刷新浏览器http://localhost:3000/
发现输出并没有改变,需要重新启动服务端,才能得到新的输出。
那如何实现监听变化,刷新页面后,不需要重启服务就能得到新的输出呢?
npm i -D nodemon
安装nodemon
包
将node
运行改成nodemon
运行可执行文件server/bin/index.js
。
对应上方的运行改变:
方式一:cli
server
下,开启命令行,运行$(npm bin)/nodemon app.js
方式二:scripts
server/package.json
文件的scripts
编写"start": "nodemon app.js"
,然后在项目路径server
下,开启命令行npm start
方式三:编辑器vs code
server/bin/index.js
文件内,f5
选择Node.js
运行环境(必须聚焦在可执行文件中){ // 使用 IntelliSense 了解相关属性。 // 悬停以查看现有属性的描述。 // 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387 "version": "0.2.0", "configurations": [ { "type": "node", "request": "launch", "name": "Launch Program", "program": "${workspaceFolder}/server/bin/index.js", "skipFiles": [ "<node_internals>/**" ] }, { "type": "node", "request": "launch", "name": "nodemon", "runtimeExecutable": "${workspaceFolder}/server/node_modules/.bin/nodemon", "program": "${workspaceFolder}/server/bin/index.js", "restart": true, "console": "integratedTerminal", "internalConsoleOptions": "neverOpen", "skipFiles": [ "<node_internals>/**" ] } ] }
接下来都是以launch.json
运行服务。