Package.json - NODE_ENV 到生产/部署

Tim*_*Tim 5 javascript reactjs react-router

我是 Web 开发的新手,最近开始将我的简单 Web 应用程序推送到 GitHub 页面。我很快发现我的页面在集成后不会呈现,react-router因为我的开发和产品 URL 链接不同。

我的问题是,如何设置我的package.json.env以便它能够正确呈现我的 URL?

我的.env文件如下所示:

REACT_APP_PUBLIC_URL="my-site"
Run Code Online (Sandbox Code Playgroud)

我的package.json样子:

"scripts": {
    "start": "NODE_ENV=development react-scripts start",
    "start:prod": "NODE_ENV=production react-scripts start",
    "build": "react-scripts build",
    "test": "react-scripts test --env=jsdom",
    "eject": "react-scripts eject",
    "predeploy": "npm run build",
    "deploy": "gh-pages -d build"
  }
Run Code Online (Sandbox Code Playgroud)

在我的内部Index.js,我正在这样做:

if (process.env.NODE_ENV === "production") {
  require("dotenv").load();
}

console.log("PROCESS.ENV.NODE_ENV: ", process.env.NODE_ENV); // This prints "development"
console.log("PROCESS.ENV.PUBLIC_URL: ", process.env.REACT_APP_PUBLIC_URL); // This prints "my-site"
Run Code Online (Sandbox Code Playgroud)

当我运行时npm run start:prod,我会认为它将设置为NODE_ENVproduction但它似乎并没有这样做。

基本上,我想做的是在开发期间,我process.env.PUBLIC_URL应该是"",在生产期间,它应该是"my-site"。这样,我的路由器就可以正确渲染相应的视图。感谢您的帮助!

rc_*_*_dz 5

React-scripts 自动设置 NODE_ENV,请参阅medium.com 中的文章。选项之一是使用不同的环境变量,案例MY_APP_ENV