Node.js Babel、Express和React部署最佳实践
我是babel的新手,只是想知道部署分发代码的最佳实践是什么?下面是我遇到的流程和问题。如果这是最好的方法,欢迎任何建议 在使用express server的Node.js Babel、Express和React部署最佳实践,node.js,reactjs,express,npm,babeljs,Node.js,Reactjs,Express,Npm,Babeljs,我是babel的新手,只是想知道部署分发代码的最佳实践是什么?下面是我遇到的流程和问题。如果这是最好的方法,欢迎任何建议 在使用express server的“start”:“node./bin/www”启动脚本时,我开始遇到语法错误:无法在模块外部使用import语句。从我的研究中,我发现你不能使用我相信的ES6的Import语法 为了在开发中解决这个问题,我开始使用。我首先安装了dev依赖项 npm install @babel/cli @babel/core @babel/node @ba
“start”:“node./bin/www”
启动脚本时,我开始遇到语法错误:无法在模块外部使用import语句。从我的研究中,我发现你不能使用我相信的ES6的Import
语法
为了在开发中解决这个问题,我开始使用。我首先安装了dev依赖项
npm install @babel/cli @babel/core @babel/node @babel/preset-env nodemon --save-dev
然后我开始用nodemon--exec babel node./bin/www
运行脚本,这解决了SyntaxError:cannotuse use import语句在模块之外的问题
但是,阅读for babel its时,会发现babel节点
命令并非用于生产。我希望能够使用命令node./bin/www
来运行我的服务器。我发现了这个与babel一起使用服务器代码的示例,并开始实现它
它使用命令babel[source]-d[destination]
将我的服务器代码转换成兼容的JavaScript。我开始使用这个命令创建npm脚本,开始为分发代码创建我的dist
文件夹。下面显示了我的package.json
中用于转换文件的scripts
部分
"scripts": {
"build-server": "babel app.js -d dist",
"build-routes": "babel routes -d dist/routes",
"build-controllers": "babel controllers -d dist/controllers",
"build-services": "babel services -d dist/services",
"build-db": "babel db -d dist/db",
"build-bin": "npx copyfiles bin/* dist ",
"build-pk": "npx copyfiles package.json dist && npx copyfiles package-lock.json dist && npx copyfiles views/* dist",
"build": "npm run build-server && npm run build-routes && npm run build-controllers && npm run build-services && npm run build-db && npm run build-bin && npm run build-pk"
},
我没有在build bin
脚本中运行babel
命令,因为没有SyntaxError:无法在模块外部使用import语句在这些文件中,此错误来自我的路由、控制器、数据库、服务
目录和我的app.js
文件
我的客户端代码位于client
目录的root
目录下。要构建客户端代码,我只需使用启动时附带的“build”:“react scripts build”
。我客户端的分发代码现在位于client/build/
下。我只是制作了更多的npm脚本,将此代码复制到我的dist
目录中
"scripts": {
"start": "node ./bin/www"
}
最后的package.json
文件scripts
部分如下所示
"scripts": {
"start": "node ./bin/www",
"start-dis": "node ./dist/bin/www",
"dev": "nodemon --exec babel-node ./bin/www",
"build-server": "babel app.js -d dist",
"build-routes": "babel routes -d dist/routes",
"build-controllers": "babel controllers -d dist/controllers",
"build-services": "babel services -d dist/services",
"build-db": "babel db -d dist/db",
"build-bin": "npx copyfiles bin/* dist ",
"build-eb": "npx copyfiles .ebextensions/* dist",
"build-pk": "npx copyfiles package.json dist && npx copyfiles package-lock.json dist && npx copyfiles views/* dist",
"build-client":"npx copyfiles client/build/static/css/* dist && npx copyfiles client/build/static/js/* dist && npx copyfiles client/build/* dist",
"build": "npm run build-server && npm run build-routes && npm run build-controllers && npm run build-services && npm run build-db && npm run build-bin && npm run build-eb && npm run build-pk && npm run build-client"
}
运行命令npm run build
将创建以下目录结构(注意。ebextensions
只是aws elasticbeanstalk的配置文件
这可以工作,当我在dist
目录下时,我现在可以使用package.json
文件中的脚本start
运行我的服务器
"scripts": {
"start": "node ./bin/www"
}
只是不确定所有这些是否都是最佳实践,以及是否存在更具可扩展性的解决方案?欢迎提供有关将Babel与React和Express结合使用的任何建议/提示