如何在 Heroku 上 运行 Node.js 启用 ES2017 功能的应用程序?
How to run Node.js app with ES2017 features enabled on Heroku?
我是 Node 的新手,我创建了一个应用程序,其中包含一些 async/await 语法,如下所示:
const express = require('express');
const app = express();
const someLibrary = require('someLibrary');
function asyncWrap(fn) {
return (req, res, next) => {
fn(req, res, next).catch(next);
};
};
app.post('/getBlock', asyncWrap(async (req,res,next) => {
let block = await someLibrary.getBlock(req.body.id);
[some more code]
}));
app.listen(process.env.PORT || 8000);
它在我的机器上运行良好,但是当我部署到 Heroku 时出现错误,因为语法不受支持:
2017-03-23T10:11:13.953797+00:00 app[web.1]: app.post('/getBlock', asyncWrap(async (req,res,next) => {
2017-03-23T10:11:13.953799+00:00 app[web.1]: SyntaxError: Unexpected token (
让 Heroku 支持这种语法的最简单方法是什么?
在 package.json 中指定要使用的节点版本:https://devcenter.heroku.com/articles/nodejs-support#specifying-a-node-js-version
因此,对于 async/await 支持,您需要指定 >= 7.6.0
{
"engines": {
"node": ">= 7.6.0"
}
}
来自此处的 Heroku 文档
https://devcenter.heroku.com/articles/getting-started-with-nodejs#declare-app-dependencies
应该在您的 package.json 文件中声明哪些引擎应该可以访问:
{
"name": "node-js-getting-started",
"version": "0.2.5",
...
"engines": {
"node": "5.9.1"
},
"dependencies": {
"ejs": "2.4.1",
"express": "4.13.3"
},
...
}
我是 Node 的新手,我创建了一个应用程序,其中包含一些 async/await 语法,如下所示:
const express = require('express');
const app = express();
const someLibrary = require('someLibrary');
function asyncWrap(fn) {
return (req, res, next) => {
fn(req, res, next).catch(next);
};
};
app.post('/getBlock', asyncWrap(async (req,res,next) => {
let block = await someLibrary.getBlock(req.body.id);
[some more code]
}));
app.listen(process.env.PORT || 8000);
它在我的机器上运行良好,但是当我部署到 Heroku 时出现错误,因为语法不受支持:
2017-03-23T10:11:13.953797+00:00 app[web.1]: app.post('/getBlock', asyncWrap(async (req,res,next) => {
2017-03-23T10:11:13.953799+00:00 app[web.1]: SyntaxError: Unexpected token (
让 Heroku 支持这种语法的最简单方法是什么?
在 package.json 中指定要使用的节点版本:https://devcenter.heroku.com/articles/nodejs-support#specifying-a-node-js-version
因此,对于 async/await 支持,您需要指定 >= 7.6.0
{
"engines": {
"node": ">= 7.6.0"
}
}
来自此处的 Heroku 文档
https://devcenter.heroku.com/articles/getting-started-with-nodejs#declare-app-dependencies
应该在您的 package.json 文件中声明哪些引擎应该可以访问:
{
"name": "node-js-getting-started",
"version": "0.2.5",
...
"engines": {
"node": "5.9.1"
},
"dependencies": {
"ejs": "2.4.1",
"express": "4.13.3"
},
...
}