当文件位于不同文件夹中时,如何在 NodeJS 应用程序中同时运行服务器和客户端

ale*_*lex 7 node.js npm express reactjs

我的项目被分成 2 个文件夹,客户端文件夹中的客户端和服务器,通常 在带有跟踪脚本的服务器react-create-app package.json 文件夹中 package.json

scripts: {
 start: node app.js
server: nodemon app.js
}
Run Code Online (Sandbox Code Playgroud)

如何通过 npm start 运行脚本以同时运行后端和前端

client
  -app.js
  -package.json
server
  -app.js
  -package.json
Run Code Online (Sandbox Code Playgroud)

我找到了一个解决方案,您可以从服务器文件夹启动,如下所示

dev: "concurently" npm run server "" npm run client "
Run Code Online (Sandbox Code Playgroud)

但是如果 package.json 位于不同的文件夹中如何开始

two*_*nds 11

如果您的客户端/前端和服务器/后端文件夹在根目录中是分开的,则可以使用concurrently. 在此之前需要完成一些事情:

  1. CD 进入根目录
  2. npm init -y(进入)
  3. touch .gitignore(进入)
  4. 添加/node_modules.gitignore文件
  5. npm install concurrently nodemon --save-dev(进入)
  6. 在根目录中安装所有后端服务器依赖项
  7. 将以下三个脚本添加到您的根目录package.json

"scripts": {
  "server": "nodemon --quiet server",
  "client": "npm start --prefix client",
  "dev": "concurrently \"npm run server\" \"npm run client\"",
},
Run Code Online (Sandbox Code Playgroud)

当在终端中执行命令时,和脚本client都由根目录中的脚本backend一起运行。该脚本遍历客户端和服务器目录,找到目录中的index.js 文件,然后运行每个服务器。devnpm run devdev

您的服务器/后端目录不需要脚本package.json或任何脚本,node_modules因为它们可以从根目录全局访问。

client
  -index.js (index.js file in react is ran before app.js)
  -package.json
server
  -app.js <-- Rename to index.js
  -package.json <-- Remove package.json
Run Code Online (Sandbox Code Playgroud)
  1. CD 到您的 client/front-end 目录
  2. 将此start脚本添加到您的客户端package.json

client
  -index.js (index.js file in react is ran before app.js)
  -package.json
server
  -app.js <-- Rename to index.js
  -package.json <-- Remove package.json
Run Code Online (Sandbox Code Playgroud)

  1. npm run dev通过 CD 进入根目录并执行(输入)来同时运行服务器/后端和客户端/前端

您的目录如下所示:

root
  client
    -index.js
    -package.json
    -/node_modules
  server
    -index.js
-package.json
-/node_modules
Run Code Online (Sandbox Code Playgroud)

这个目录设置更适合heroku 部署。