简体   繁体   English

Node.js:在生产环境中启动Web应用程序时出错

[英]Nodejs: Error starting web application in production environment

When I try to start my web application with Nodejs only, I've no any problem and my web application works fine. 当我尝试仅使用Node.js启动Web应用程序时,我没有任何问题,并且Web应用程序运行正常。

But when I try to simulate in my laptop the start in production, namely, the static pages will be served by webpack server and the data from the API will be served by Nodejs. 但是,当我尝试在笔记本电脑中模拟生产的开始时,即静态页面将由webpack服务器提供,而来自API的数据将由Nodejs提供。 I've got this error: 我有这个错误:

/home/josecarlos/Workspace/nodejs/basketmetrics3/node_modules/convert-source-map/index.js:61
  return SafeBuffer.Buffer.from(json, 'utf8').toString('base64');
                           ^

TypeError: Cannot read property 'from' of undefined
    at Converter.toBase64 (/home/josecarlos/Workspace/nodejs/basketmetrics3/node_modules/convert-source-map/index.js:61:28)
    at Converter.toComment (/home/josecarlos/Workspace/nodejs/basketmetrics3/node_modules/convert-source-map/index.js:65:21)
    at generateCode (/home/josecarlos/Workspace/nodejs/basketmetrics3/node_modules/@babel/core/lib/transformation/file/generate.js:78:76)
    at runSync (/home/josecarlos/Workspace/nodejs/basketmetrics3/node_modules/@babel/core/lib/transformation/index.js:50:51)
    at transformSync (/home/josecarlos/Workspace/nodejs/basketmetrics3/node_modules/@babel/core/lib/transform.js:43:38)
    at Object.transform (/home/josecarlos/Workspace/nodejs/basketmetrics3/node_modules/@babel/core/lib/transform.js:22:38)
    at compile (/home/josecarlos/Workspace/nodejs/basketmetrics3/node_modules/@babel/register/lib/node.js:73:20)
    at compileHook (/home/josecarlos/Workspace/nodejs/basketmetrics3/node_modules/@babel/register/lib/node.js:102:12)
    at Module._compile (/home/josecarlos/Workspace/nodejs/basketmetrics3/node_modules/pirates/lib/index.js:93:29)
    at Module._extensions..js (internal/modules/cjs/loader.js:827:10)

To start my project I use this command npm run start 要启动我的项目,我使用以下命令npm run start

These are my config files: 这些是我的配置文件:

package.json package.json

{
  "name": "basketmetrics3",
  "version": "1.0.0",
  "description": "Basketball advanced stats",
  "main": "server.js",
  "scripts": {
    "dev-webpack": "webpack-dev-server --hot --mode development",
    "clean": "rm -rf ./dist",
    "dev": "npm run clean && npm run compile-dev && cross-env NODE_ENV=development nodemon --exec babel-node src/server/server.js --ignore ./src/client",
    "compile-dev": "NODE_ENV=development webpack -d --config ./webpack.config.babel.js --progress",    
    "compile": "NODE_ENV=production webpack -p --config ./webpack.config.babel.js --progress",
    "start": "npm run clean && npm run compile && cross-env NODE_ENV=production babel-node src/server/server.js --ignore ./src/client"
  },
  "license": "ISC",
  "dependencies": {
    "@babel/polyfill": "^7.4.4",
    "@material-ui/core": "^3.9.3",
    "@material-ui/icons": "^3.0.2",
    "bootstrap": "^4.3.1",
    "cors": "^2.8.5",
    "create-react-app": "^3.0.1",
    "cross-env": "^5.2.0",
    "d3": "^5.9.7",
    "dotenv": "^7.0.0",
    "express": "^4.17.1",
    "express-graphql": "^0.7.1",
    "graphql": "^14.4.2",
    "jquery": "^3.4.1",
    "morgan": "^1.9.1",
    "mysql2": "^1.6.5",
    "popper.js": "^1.15.0",
    "react": "^16.8.6",
    "react-bootstrap": "^1.0.0-beta.10",
    "react-bootstrap-table-next": "^3.1.7",
    "react-bootstrap-table2-paginator": "^2.0.7",
    "react-dom": "^16.8.6",
    "react-multi-language": "^0.4.2",
    "react-router-dom": "^5.0.1",
    "react-simple-tooltip": "^2.6.1",
    "sequelize": "^4.44.2",
    "validator": "^10.11.0"
  },
  "devDependencies": {
    "@babel/cli": "^7.5.5",
    "@babel/core": "^7.5.5",
    "@babel/node": "^7.5.5",        
    "@babel/preset-env": "^7.5.5",
    "@babel/preset-react": "^7.0.0",
    "babel-loader": "^8.0.6",
    "babel-plugin-transform-class-properties": "^6.24.1",
    "babel-register": "^6.26.0",
    "css-loader": "^2.1.1",
    "file-loader": "^3.0.1",
    "html-webpack-plugin": "^3.2.0",
    "mini-css-extract-plugin": "^0.5.0",
    "nodemon": "^1.19.1",
    "path": "^0.12.7",
    "style-loader": "^0.23.1",
    "url-loader": "^1.1.2",
    "webpack": "^4.38.0",
    "webpack-cli": "^3.3.6",
    "webpack-dev-server": "^3.7.2"
  }
}

.babelrc .babelrc

{
    "presets": [
        ["@babel/preset-env" , {"modules": "cjs"}], 
        "@babel/preset-react"
    ],
    "plugins": [
        "transform-class-properties"
    ],
    "ignore": [
        "./node_modules"
    ]
}

I have been looking for information about my problem and I have found that I have to add "ignore: [node_modules]" to my .babelrc file. 我一直在寻找有关我的问题的信息,并且发现必须在我的.babelrc文件中添加“忽略:[node_modules]”。 But, after I have added this entry in my .babelrc file, my application still doesn't work :( 但是,在我将此条目添加到.babelrc文件中之后,我的应用程序仍然无法正常工作:(

Is there any other way to ignore "node_modules" with node.js? 还有其他方法可以通过node.js忽略“ node_modules”吗? How can I ignore "node_modules"? 如何忽略“ node_modules”? If this is the real reason of my error, of course. 当然,如果这是我出错的真正原因。

What can I do to fix the error that I've got? 我该怎么做才能解决我遇到的错误?

I have found a solution to my problem. 我已经找到解决问题的办法。 Changing the start script adding the ignore of "node_modules" is enough. 更改启动脚本并添加忽略“ node_modules”就足够了。

My "start" script in package.json will be: 我在package.json中的“开始”脚本将是:

  "scripts": {
    "dev-webpack": "webpack-dev-server --hot --mode development",
    "clean": "rm -rf ./dist",
    "dev": "npm run clean && npm run compile-dev && cross-env NODE_ENV=development nodemon --exec babel-node src/server/server.js --ignore ./src/client",
    "compile-dev": "NODE_ENV=development webpack -d --config ./webpack.config.babel.js --progress",
    "compile": "NODE_ENV=production webpack -p --config ./webpack.config.babel.js --progress",
    "start": "npm run clean && npm run compile && cross-env NODE_ENV=production babel-node src/server/server.js --ignore ./node_modules"
  },

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM