簡體   English   中英

我可以在不運行“npm run build”的情況下從快速服務器提供 create react 應用程序嗎?

[英]Can I serve a create react app from an express server without running 'npm run build'?

我有一個帶有快速服務器的 nodejs。 我想從服務器提供一個 create react 應用程序。 如果不構建 React 應用程序,這可能嗎?

我現在正在做的一個項目的例子。

我為這樣的內置反應應用程序提供服務...

 //// Server static resources.
ROUTER.use('/static', EXPRESS.static(PATH.join(__dirname, '../', '../', 'project', 'build', 'static')));
//// Server built react app. 
ROUTER.get('/',  function(req, res) {        
    res.sendFile(  PATH.join(__dirname, '../', '../', 'project', 'build', 'index.html' ));
});

有什么方法可以在不構建 React 應用程序的情況下為其提供服務? 就像是...

ROUTER.get('/', function(req, res) {
    //redirect to loopback port for react app. 
});

您需要定義一個適合您的項目布局

由於您有客戶端和服務器端代碼,您可以維護兩個文件夾,每個文件夾都包含特定於模塊的代碼。

create-react-app這樣的 CLI 工具期望采用這種方法,除非您的項目使用某種SSR

一個合理的好的項目布局如下所示:

my-project/
├── my-project-react/
│   ├── package.json 
│   ├── src/  
│   ├── (... other project files) 
│   └── README.md 
├── my-project-express/
│   ├── package.json 
│   ├── app/ 
│   ├── (... other project files) 
│   └── README.md 
├── .gitignore 
└── README.md

這樣你就可以用 nodemon 服務 express 並與 webpack dev server 反應,只記得在express 上啟用 cors 您還必須根據 NODE_ENV 調整 Web 應用項目內的服務地址。

crisp-react有一個基於 Express 的后端子項目,它為示例 React 應用程序(不是 CRA)提供服務。

如果您按照入門或執行命令:

  • git clone https://github.com/winwiz1/crisp-react.git
  • cd crisp-react
  • yarn install && yarn start:prod
    快遞正在運行...
    Control+C終止

然后您將有一個運行的 Express 實例,提供一個 React 應用程序,您可以通過將瀏覽器指向 localhost:3000 來查看該實例。 backend/Express 子項目只服務於 React 應用程序,它不構建應用程序,實際上無法構建它,因為后端在其package.json 中沒有作為依賴項的 React 庫。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM