Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/383.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在express项目中将create react应用程序添加为前端_Javascript_Reactjs_Express_Create React App - Fatal编程技术网

Javascript 在express项目中将create react应用程序添加为前端

Javascript 在express项目中将create react应用程序添加为前端,javascript,reactjs,express,create-react-app,Javascript,Reactjs,Express,Create React App,我有一个定制的Express项目,有一个小的React前端,用gulp构建 我想做的是添加一个create react应用程序作为我的项目中的第二个前端,因此我: 在项目根目录中创建了一个src/文件夹 将src/表单粘贴到我的项目中的create react应用程序src/ 在我的package.json中添加了react脚本和所有create react app依赖项 安装了所有新的依赖项 在我的package.json脚本中添加了“build”:“react scripts build”

我有一个定制的Express项目,有一个小的React前端,用gulp构建

我想做的是添加一个create react应用程序作为我的项目中的第二个前端,因此我:

  • 在项目根目录中创建了一个
    src/
    文件夹
  • src/
    表单粘贴到我的项目中的create react应用程序
    src/
  • 在我的
    package.json中添加了
    react脚本
    和所有
    create react app
    依赖项
  • 安装了所有新的依赖项
  • 在我的
    package.json
    脚本中添加了
    “build”:“react scripts build”
我想在默认文件夹
/build
中构建
create react app
,并使用routes底部的以下代码响应所有与构建的
create react app
索引不匹配的API路由请求:

app.get('*', (req, res)=>{
    res.sendFile(path.join(__dirname, '..','build','index.html'));
})
但是运行
npm run build
我得到:

> node-js-scaffolder@0.0.1 build /Users/matt/dev/my-api
> react-scripts build

Could not find a required file.
Name: index.html
Searched in: /Users/matt/dev/my-api/public
实际上,我有一个
public/
文件夹,gulp在其中保存我构建的前端和一些图像,但是
react scripts
应该在
src/
文件夹中查找
创建react应用程序的入口点

编辑:我的完整
包.json

{
  "name": "my project",
  "version": "0.0.1",
  "private": true,
  "scripts": {
    "build": "react-scripts build",
    "start": "npm run gulp -- --production && sequelize db:migrate --config=config/migrations.json --env=production && pm2 startOrReload config/pm2/production.json",
    "dev": "npm run gulp dev -- --development",
    "gulp": "gulp",
    "prestart": "npm install",
    "startStaging": "npm install && npm run gulp -- --staging && sequelize db:migrate --config=config/migrations.json --env=staging && pm2 startOrReload config/pm2/staging.json",
    "stop": "pm2 stop config/pm2/production.json",
    "stopStaging": "pm2 stop config/pm2/staging.json",
    "deploy": "git pull && npm start",
    "deployStaging": "git pull && npm run startStaging",
 },
"dependencies": {
  "@babel/runtime": "7.0.0-beta.55",
  "@material-ui/core": "1.4.1",
  "@material-ui/icons": "2.0.0",
  "@types/googlemaps": "3.30.11",
  "@types/markerclustererplus": "2.1.33",
  "ajv": "6.5.2",
  "async": "^2.6.0",
  "babel-polyfill": "^6.26.0",
  "body-parser": "^1.18.2",
  "bunyan": "^1.8.12",
  "chance": "^1.0.12",
  "chartist": "0.10.1",
  "cheerio": "^0.20.0",
  "classnames": "2.2.6",
  "compression": "^1.7.1",
  "connect-flash": "^0.1.1",
  "continuation-local-storage": "^3.2.1",
  "cookie-parser": "^1.3.3",
  "csv-parse": "^2.2.0",
  "del": "^2.2.2",
  "express": "^4.16.2",
  "express-brute": "^1.0.1",
  "express-brute-redis": "0.0.1",
  "express-jwt": "^3.4.0",
  "geolib": "^2.0.24",
  "glob": "^6.0.4",
  "helmet": "^2.3.0",
  "inky": "^1.3.7",
  "js-cookie": "^2.2.0",
  "jsonwebtoken": "^7.4.3",
  "juice": "^2.0.0",
  "lodash": "^4.17.4",
  "material-ui": "^0.19.3",
  "method-override": "^2.3.10",
  "minimist": "^1.2.0",
  "moment": "^2.19.3",
  "moment-timezone": "^0.5.14",
  "morgan": "^1.9.0",
  "multi-glob": "^1.0.1",
  "mysql": "^2.15.0",
  "node-fetch": "^2.1.2",
  "node-sass": "^3.13.1",
  "node-schedule": "^1.2.5",
  "nunjucks": "^2.5.2",
  "perfect-scrollbar": "1.4.0",
  "prop-types": "^15.6.0",
  "react": "^16.2.0",
  "react-chartist": "0.13.1",
  "react-dom": "16.4.1",
  "react-dropzone": "^4.2.3",
  "react-google-maps": "9.4.5",
  "react-redux": "^5.0.6",
  "react-router-dom": "4.3.1",
  "react-scripts": "1.1.4",
  "react-swipeable-views": "0.12.15",
  "redux": "^3.7.2",
  "redux-thunk": "^2.3.0",
  "request": "^2.83.0",
  "run-sequence": "^1.2.2",
  "sequelize": "^3.31.0",
  "serve-favicon": "^2.4.5",
  "slugify": "^1.3.0",
  "uuid": "^3.1.0",
  "validator": "^9.2.0",
  "vinyl-buffer": "^1.0.0"
  },
} 

我做错了什么?

首先,按如下方式弹出create react应用程序项目:

npm运行弹出
纱线弹出

其次,您可以从以下位置配置
index.html
public folder
路径:
[react project dir]/config/path.js

在您的情况下,我假设
eject
命令将在项目的根目录中创建一个文件夹,以便您可以在以下位置找到它:
[project dir]/config/path.js

您可以更改以下参数:

。。。
appPublic:resolveApp('public'),
appHtml:resolveApp('public/index.html'),

像这样:

appPublic:resolveApp('public_react'),

appHtml:resolveApp('public_react/index.html'),

我创建了一个新的存储库,但我仍然希望使用express为
创建react app
提供服务,因此我在项目中创建了一个
/client
文件夹,并将所有
创建react app
文件和文件夹及其
包.json
放在那里

我用于在开发模式下部署或使用午餐的脚本如下:

"client": "cd client && yarn start",
"server": "nodemon server.js",
"dev": "concurrently --kill-others-on-fail \"yarn server\" \"yarn client\"",
"build": "yarn && cd client && yarn && yarn build && cd ../",
"deploy": "git pull origin master && yarn build && pm2 restart server.js || pm2 start server.js"

如果有人有任何经验,我想知道这种方法的缺点。

你能分享你的完整
包.json
?你的src文件夹的结构是什么?添加了
包.json
src/
文件夹结构与你在这里看到的相同:谢谢,但是如果我在处理src文件夹之前弹出
create react app
,我还必须复制网页包配置、构建脚本并在package.json中添加许多依赖项,不是吗?