BabelJs over Heroku: Couldn't find preset “env” relative to directory “/app”

两盒软妹~` 提交于 2019-12-11 04:27:09

问题


I have an application with SailsJs over NodeJs on Heroku and I can't run babeljs on. It runs ok on my localhost, but I always get the error:

Error: Couldn't find preset "env" relative to directory "/app"

The Heroku persists in look for itens at /app folder. This project does not have one /app folder

My app folders structure is:

app_name
- api
- assets
- config
- tasks
- views

I follow the documentation of http://babeljs.io to my .babelrc

.babelrc

now:

{
  "presets": ["react", "env", "stage-1"],
  "plugins": ["transform-class-properties"]
}

Already tried:

{
  "presets": ["react", "es2015", "stage-1"],
  "plugins": ["transform-class-properties"]
}

When I set the .babelrc to use es2015 I get the error:

Invalid:
   `{ presets: [{option: value}] }`
Valid:
    `{ presets: [['presetName', {option: value}]] }`

I already installed the dependencies

npm install babel-preset-es2015

npm install babel-preset-react

npm install babel --save-dev

My package.json

{
  "name": "redux-cardeck",
  "private": true,
  "version": "0.0.1",
  "engines": {
    "node": "6.11.4"
  },
  "description": "a Sails-Redux application for multi-player online card game",
  "keywords": [
    "sailsjs",
    "redux",
    "es2015",
    "webpack"
  ],
  "dependencies": {
    "axios": "^0.13.1",
    "babel-cli": "^6.26.0",
    "babel-plugin-transform-class-properties": "^6.11.5",
    "babel-plugin-transform-object-rest-spread": "^6.6.5",
    "babel-polyfill": "^6.7.2",
    "babel-preset-stage-1": "^6.13.0",
    "connect-mongo": "0.8.2",
    "css-loader": "^0.23.1",
    "ejs": "2.3.4",
    "file-loader": "^0.8.5",
    "grunt": "0.4.5",
    "grunt-babel": "^6.0.0",
    "grunt-contrib-clean": "0.6.0",
    "grunt-contrib-coffee": "0.13.0",
    "grunt-contrib-concat": "0.5.1",
    "grunt-contrib-copy": "0.5.0",
    "grunt-contrib-cssmin": "0.9.0",
    "grunt-contrib-jst": "0.6.0",
    "grunt-contrib-less": "1.1.0",
    "grunt-contrib-uglify": "0.7.0",
    "grunt-contrib-watch": "0.5.3",
    "grunt-sails-linker": "~0.10.1",
    "grunt-sync": "0.2.4",
    "include-all": "~0.1.6",
    "node-sass": "^3.8.0",
    "postcss-modules-extract-imports": "^1.0.0",
    "postcss-modules-scope": "^1.0.0",
    "rc": "1.0.1",
    "react": "^0.14.9",
    "react-dom": "^0.14.9",
    "react-redux": "^4.4.8",
    "react-router": "^2.6.1",
    "react-tap-event-plugin": "^0.2.2",
    "redux": "^3.7.2",
    "redux-form": "^5.3.2",
    "redux-optimist": "0.0.2",
    "redux-optimistic-ui": "^0.3.2",
    "redux-promise": "^0.5.3",
    "redux-thunk": "^2.1.0",
    "redux-undo": "^0.6.1",
    "sails": "~0.12.1",
    "sails-disk": "~0.10.9",
    "sails-hook-babel": "^6.0.1",
    "sails-mongo": "^0.12.2",
    "sails-postgresql": "^0.11.4",
    "sails-service-mailer": "^3.2.1",
    "sails-webpack": "^1.0.13",
    "sass": "^0.5.0",
    "sass-loader": "^3.2.3",
    "style-loader": "^0.13.1",
    "unexpected-react": "^1.0.0",
    "updeep": "^0.16.1",
    "url-loader": "^0.5.7"
  },
  "scripts": {
    "debug": "node debug app.js",
    "start": "./node_modules/.bin/babel-node app.js"
  },
  "main": "app.js",
  "repository": {
    "type": "git",
    "url": "git://github.com/vanphuong12a2/redux-cardeck.git"
  },
  "author": "phuong",
  "license": "",
  "devDependencies": {
    "axios-mock-adapter": "^1.6.1",
    "babel-cli": "^6.26.0",
    "babel-core": "^6.7.2",
    "babel-loader": "^6.4.1",
    "babel-preset-env": "^1.6.1",
    "babel-preset-es2015": "^6.24.1",
    "babel-preset-react": "^6.24.1",
    "babel-preset-stage-0": "^6.24.1",
    "css-modules-require-hook": "^4.0.0",
    "jsdom": "^8.1.0",
    "react-tools": "^0.13.3",
    "redux-devtools": "^3.4.0",
    "redux-logger": "^2.6.1",
    "source-map": "^0.5.3",
    "unexpected": "^10.10.8",
    "webpack-dev-server": "^1.14.1"
  }
}

Someone already used BabelJs on Heroku before? I can't understand why it cant find babeljs at the package.json. I set the local of babel on heroku as

"scripts": {
    "debug": "node debug app.js",
    "start": "./node_modules/.bin/babel-node app.js"
  },

I think it could be a problem with the relative structure of heroku or the fact I do not have a folder with name app

Thanks if someone can help me with this.


回答1:


By default Heroku doesn't install the dependencies listed on "devDependencies" in your package.json.

You can either move your presets to "dependencies" or follow the steps here to alter this behavior.



来源:https://stackoverflow.com/questions/46963058/babeljs-over-heroku-couldnt-find-preset-env-relative-to-directory-app

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!