Я недавно преобразовал свой экспресс api fron es5 в синтаксис es6, и сборка heroku не выполняется со следующей ошибкой heroku-cli
import express from 'express';
SyntaxError: Unexpected identifier
, которая заставляет меня поверить, что не удается перенести мой код es6 в es5.
Procfile
web: node ./src/index.js
Это мой файл babelrc
{
"presets": ["@babel/preset-env"],
"plugins": [
"@babel/plugin-transform-runtime",
"@babel/plugin-proposal-class-properties",
"@babel/plugin-proposal-object-rest-spread",
"@babel/plugin-transform-async-to-generator",
"@babel/plugin-transform-object-assign"
],
"ignore": ["node_modules", "**/public"]
}
, и это сценарии, которые я запускаю в моем package.json
"scripts": {
"start": "env-cmd -f ./config/dev.env nodemon --watch src --exec babel-node src/index.js",
"dev": "env-cmd -f ./config/dev.env nodemon src/index.js",
"test": "env-cmd -f ./config/test.env jest --forceExit --detectOpenHandles --coverage",
"travis": "jest --forceExit --detectOpenHandles --coverage",
"lint": "eslint src/"
},
Для большей ясности мой файл index.js выглядит примерно так:
import express from 'express';
import bodyParser from 'body-parser';
import passport from 'passport';
import './db/mongoose'
import cors from 'cors';
import router from './routes';
const app = express();
const port = process.env.PORT || 8000;
//Body parser middleware
app.use(bodyParser.urlencoded({ extended: false }));
app.use(bodyParser.json());
.... some code
app.use((req, res, next) =>{
return res.status(404).json({
message:'Resource not found',
status: false
})
})
if(process.env.NODE_ENV !== 'test') {
app.listen(port, () => {
console.log(`Server running on port ${port}`);
});
}
export default app
Приложение отлично работает локально, тесты проходят как локально, так и на Travis. Я что-то пропустил?