🎨 Many minor improvement (#28)

dependabot/npm_and_yarn/mixin-deep-1.3.2
王子亭 7 years ago committed by Lee Yeh
parent 5e2c94143b
commit 518d183fdc
  1. 3
      .jshintrc
  2. 36
      README.md
  3. 19
      app.js
  4. 2
      cloud.js
  5. 16
      package.json
  6. 2
      routes/todos.js
  7. 6
      server-cluster.js
  8. 5
      server.js

@ -1,3 +0,0 @@
{
"node": true
}

@ -1,17 +1,15 @@
# Node.js Getting started
一个简单的使用 Express 4 的 Node.js 应用。
可以运行在 LeanEngine Node.js 运行时环境。
在 LeanCloud 云引擎上使用 Express 的 Node.js 实例项目。
## 一键部署
[![Deploy to LeanEngine](http://ac-32vx10b9.clouddn.com/109bd02ee9f5875a.png)](https://leancloud.cn/1.1/functions/_ops/deploy-button)
[![Deploy to LeanEngine](http://ac-32vx10b9.clouddn.com/109bd02ee9f5875a.png)](https://leancloud.cn/1.1/engine/deploy-button)
## 本地运行
首先确认本机已经安装 [Node.js](http://nodejs.org/) 运行环境和 [LeanCloud 命令行工具](https://www.leancloud.cn/docs/leanengine_cli.html),然后执行下列指令:
首先确认本机已经安装 [Node.js](http://nodejs.org/) 运行环境和 [LeanCloud 命令行工具](https://leancloud.cn/docs/leanengine_cli.html),然后执行下列指令:
```
$ git clone git@github.com:leancloud/node-js-getting-started.git
$ git clone https://github.com/leancloud/node-js-getting-started.git
$ cd node-js-getting-started
```
@ -21,21 +19,20 @@ $ cd node-js-getting-started
npm install
```
关联应用:
登录并关联应用:
```
lean app add origin <appId>
lean login
lean checkout
```
这里的 appId 填上你在 LeanCloud 上创建的某一应用的 appId 即可。origin 则有点像 Git 里的 remote 名称。
启动项目:
```
lean up
```
应用即可启动运行:[localhost:3000](http://localhost:3000)
之后你就可以在 [localhost:3000](http://localhost:3000) 访问到你的应用了。
## 部署到 LeanEngine
@ -44,15 +41,12 @@ lean up
lean deploy
```
将预备环境的代码发布到生产环境:
```
lean publish
```
## 相关文档
* [LeanEngine 指南](https://leancloud.cn/docs/leanengine_guide-node.html)
* [JavaScript 指南](https://leancloud.cn/docs/js_guide.html)
* [JavaScript SDK API](https://leancloud.cn/api-docs/javascript/index.html)
* [命令行工具详解](https://leancloud.cn/docs/cloud_code_commandline.html)
* [LeanEngine FAQ](https://leancloud.cn/docs/cloud_code_faq.html)
* [云函数开发指南](https://leancloud.cn/docs/leanengine_cloudfunction_guide-node.html)
* [网站托管开发指南](https://leancloud.cn/docs/leanengine_webhosting_guide-node.html)
* [JavaScript 开发指南](https://leancloud.cn/docs/leanstorage_guide-js.html)
* [JavaScript SDK API](https://leancloud.github.io/javascript-sdk/docs/)
* [Node.js SDK API](https://github.com/leancloud/leanengine-node-sdk/blob/master/API.md)
* [命令行工具使用指南](https://leancloud.cn/docs/cloud_code_commandline.html)
* [云引擎常见问题和解答](https://leancloud.cn/docs/leanengine_faq.html)

@ -4,24 +4,29 @@ var timeout = require('connect-timeout');
var path = require('path');
var cookieParser = require('cookie-parser');
var bodyParser = require('body-parser');
var todos = require('./routes/todos');
var AV = require('leanengine');
// 加载云函数定义,你可以将云函数拆分到多个文件方便管理,但需要在主文件中加载它们
require('./cloud');
var app = express();
// 设置模板引擎
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'ejs');
app.use(express.static('public'));
// 设置默认超时时间
app.use(timeout('15s'));
// 加载云函数定义
require('./cloud');
// 加载云引擎中间件
app.use(AV.express());
app.enable('trust proxy');
// 需要重定向到 HTTPS 可去除下一行的注释。
// app.use(AV.Cloud.HttpsRedirect());
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: false }));
app.use(cookieParser());
@ -31,7 +36,7 @@ app.get('/', function(req, res) {
});
// 可以将一类的路由单独保存在一个文件中
app.use('/todos', todos);
app.use('/todos', require('./routes/todos'));
app.use(function(req, res, next) {
// 如果任何一个路由都没有返回响应,则抛出一个 404 异常给后续的异常处理器
@ -43,17 +48,17 @@ app.use(function(req, res, next) {
});
// error handlers
app.use(function(err, req, res, next) { // jshint ignore:line
app.use(function(err, req, res, next) {
if (req.timedout && req.headers.upgrade === 'websocket') {
// 忽略 websocket 的超时
return;
}
var statusCode = err.status || 500;
if(statusCode === 500) {
if (statusCode === 500) {
console.error(err.stack || err);
}
if(req.timedout) {
if (req.timedout) {
console.error('请求超时: url=%s, timeout=%d, 请确认方法执行耗时很长,或没有正确的 response 回调。', req.originalUrl, err.timeout);
}
res.status(statusCode);

@ -6,5 +6,3 @@ var AV = require('leanengine');
AV.Cloud.define('hello', function(request, response) {
response.success('Hello world!');
});
module.exports = AV.Cloud;

@ -1,31 +1,25 @@
{
"name": "node-js-getting-started",
"version": "1.0.0",
"description": "A sample Node.js app using Express 4",
"private": true,
"description": "A sample Node.js app using Express",
"main": "server.js",
"scripts": {
"start": "node server.js",
"dev": "./node_modules/.bin/nodemon server.js"
"dev": "nodemon server.js"
},
"keywords": [
"node",
"LeanCloud",
"LeanEngine",
"express"
],
"license": "MIT",
"dependencies": {
"body-parser": "1.12.3",
"connect-timeout": "^1.7.0",
"cookie-parser": "^1.3.5",
"ejs": "2.3.1",
"express": "4.12.3",
"leanengine": "^1.0.0-beta"
"leanengine": "^1.2.3"
},
"devDependencies": {
"nodemon": "^1.11.0"
},
"engines": {
"node": "4.x"
"node": "6.x"
}
}

@ -2,8 +2,6 @@
var router = require('express').Router();
var AV = require('leanengine');
// `AV.Object.extend` 方法一定要放在全局变量,否则会造成堆栈溢出。
// 详见: https://leancloud.cn/docs/js_guide.html#对象
var Todo = AV.Object.extend('Todo');
// 查询 Todo 列表

@ -1,7 +1,7 @@
var cluster = require('cluster');
// 取决于你的实例的可用 CPU 数量
var workers = 2;
// 进程数量建议设置为可用的 CPU 数量
var workers = process.env.LEANCLOUD_AVAILABLE_CPUS || 1;
if (cluster.isMaster) {
for (var i = 0; i < workers; i++) {
@ -13,5 +13,5 @@ if (cluster.isMaster) {
cluster.fork();
});
} else {
require('./server.js')
require('./server.js');
}

@ -15,8 +15,9 @@ var app = require('./app');
// 端口一定要从环境变量 `LEANCLOUD_APP_PORT` 中获取。
// LeanEngine 运行时会分配端口并赋值到该变量。
var PORT = parseInt(process.env.LEANCLOUD_APP_PORT || process.env.PORT || 3000);
app.listen(PORT, function () {
console.log('Node app is running, port:', PORT);
app.listen(PORT, function (err) {
console.log('Node app is running on port:', PORT);
// 注册全局未捕获异常处理器
process.on('uncaughtException', function(err) {

Loading…
Cancel
Save