node.js - 编写 ES6 代码时如何使用 Babel 将 Node.js/React 应用程序部署到 Heroku?

标签 node.js reactjs heroku babeljs

我有一个使用 React 和 Node.js 的应用程序。我正在努力将其部署到 Heroku,因为我需要使用 Babel 来转译代码。有人可以帮助设置我需要运行的脚本吗?

我目前正在努力理解如何正确运行客户端和服务器,因为我收到了有关模块位置的错误:

Error: Cannot find module '/app/build/index.js'

这是我的 package.json

{
  "main": "server.js",
  "scripts": {
    "server": "nodemon server/server.js --ignore './client/' --exec babel-node -e js",
    "client": "npm start --prefix client",
    "dev": "concurrently \"npm run server\" \"npm run client\"",

    "clean": "rm -rf build && mkdir build",
    "build-babel": "babel -d ./build ./server/server.js -s",
    "build": "npm run clean && npm run build-babel",
    "start": "npm run build && node ./build/index.js",
    "heroku-postbuild": "npm install --prefix client && npm run build --prefix client"
  },
  "dependencies": {
    "bcryptjs": "^2.4.3",
    "body-parser": "^1.18.3",
    "concurrently": "^4.1.0",
    "express": "^4.16.4",
    "google-play-scraper": "^6.2.8",
    "googleapis": "^39.2.0",
    "is-empty": "^1.2.0",
    "jsonwebtoken": "^8.5.1",
    "mongoose": "^5.4.19",
    "mongoose-paginate-v2": "^1.0.24",
    "multer": "^1.4.1",
    "node-fetch": "^2.3.0",
    "passport": "^0.4.0",
    "passport-jwt": "^4.0.0",
    "validator": "^10.11.0",
    "winston": "^3.2.1",
    "xml2js": "^0.4.19",
    "@babel/core": "^7.3.4",
    "@babel/node": "^7.2.2",
    "babel-cli": "^6.26.0",
    "babel-loader": "^8.0.5",
    "babel-preset-es2015": "^6.24.1",
    "babel-preset-stage-0": "^6.24.1"
  },
  "devDependencies": {
    "eslint": "^5.12.0",
    "eslint-config-airbnb-base": "^13.1.0",
    "eslint-plugin-import": "^2.17.2",
    "nodemon": "^1.18.10"
  }
}

以及重要文件的文件结构:

node_modules
.babelrc
babel.config.js
package-lock.json
package.json

client
--package-lock.json
--package.json
node_modules
--src
----index.js

server
--server.js

我认为我错误地设置了脚本。

最佳答案

我的问题出在某些脚本上。这是让一切正常运行的最终 package.json。

{
  "main": "server.js",
  "scripts": {
    "server": "nodemon server/server.js --ignore './client/' --exec babel-node -e js",
    "client": "npm start --prefix client",
    "dev": "concurrently \"npm run server\" \"npm run client\"",
    "start": "npm run build && node ./build/server.js",
    "build": "npm run clean && npm run build-babel",
    "clean": "rm -rf ./build && mkdir ./build",
    "build-babel": "babel -d ./build ./server -s",
    "heroku-postbuild": "npm install --prefix client && npm run build --prefix client"
  },
  "dependencies": {
    "@babel/core": "^7.3.4",
    "@babel/node": "^7.2.2",
    "babel-cli": "^6.26.0",
    "babel-loader": "^8.0.5",
    "babel-preset-es2015": "^6.24.1",
    "babel-preset-stage-0": "^6.24.1",
    "bcryptjs": "^2.4.3",
    "body-parser": "^1.18.3",
    "concurrently": "^4.1.0",
    "express": "^4.16.4",
    "google-play-scraper": "^7.0.2",
    "googleapis": "^39.2.0",
    "is-empty": "^1.2.0",
    "jsonwebtoken": "^8.5.1",
    "mongoose": "^5.4.19",
    "mongoose-paginate-v2": "^1.0.24",
    "multer": "^1.4.1",
    "node-fetch": "^2.3.0",
    "passport": "^0.4.0",
    "passport-jwt": "^4.0.0",
    "validator": "^10.11.0",
    "winston": "^3.2.1",
    "xml2js": "^0.4.19"
  },
  "devDependencies": {
    "eslint": "^5.12.0",
    "eslint-config-airbnb-base": "^13.1.0",
    "eslint-plugin-import": "^2.17.2",
    "nodemon": "^1.18.10"
  }
}

关于node.js - 编写 ES6 代码时如何使用 Babel 将 Node.js/React 应用程序部署到 Heroku?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58026517/

相关文章:

node.js - 像 CakePHP 一样在 Node.js 中制作 token ?

javascript - 如何使用 ioredis 在 nodejs 中链接返回?

node.js - 不能在 Node.js 和 Postgres 中使用参数化 SQL 语句

javascript - this.setState 不是一个函数(尝试上传图像)ReactJs

python - 将 Flask 应用程序部署到 Heroku 陷入重启循环

heroku - 无需更改代码即可重新部署 Heroku 应用程序

node.js - 程序列表中的 Electron 生成器应用程序名称没有 Windows 版本

javascript - Firebase -- 批量删除子节点

javascript - 自动完成时的空密码输入值 (React.js)

node.js - node-cron 无法正常工作?