如何在create-react-app的package.json主页中删除最后一个/

时间:2018-12-24 20:31:27

标签: create-react-app

我正在尝试在Tridium Jace-8000设备上运行React。文件的文件网址如下:

https://localhost/ord/file:^static/js/90.5af7b6f6.chunk.js

我能够将以下内容放入package.json文件中:

"homepage": "./file:%5E"(替换/file:^以避免特殊字符)

但是,它在URL的末尾添加了一个斜杠,所以我最终在控制台中遇到如下错误:

GET https://localhost/ord/file:%5E/static/css/90.f2a8a0e3.chunk.css
net::ERR_ABORTED 400 (Bad Request)

如您所见,%5Estatic之间有多余的/。

是否有任何方法可以强制构建过程跳过多余的/

谢谢

1 个答案:

答案 0 :(得分:0)

如果有人需要它,我通过使用以下方法而不是正常的构建方法来确保每个JS或CSS文件只有1个文件来解决此问题:

const rewire = require('rewire');
const defaults = rewire('react-scripts/scripts/build.js');
let config = defaults.__get__('config');

config.optimization.splitChunks = {
    cacheGroups: {
        default: false,
    },
};

config.optimization.runtimeChunk = false;

我启动此构建脚本是因为我修改了package.json以运行此文件,而不是正常的构建。

我还必须确保禁用该项目中使用的所有LazyLoad,并用通常的import替换它。

然后,一旦构建完成,我必须进入index.html文件,如下更改它:

来自: <link href="./static/css/main.0c6501c3.css" rel="stylesheet"> <script src="./static/js/main.5dfc694d.js"></script>

至: <link href="static/css/main.0c6501c3.css" rel="stylesheet"> <script src="static/js/main.5dfc694d.js"></script>

然后,我进入计算机中工作站的备份文件夹,将生成的文件放在工作站的根目录下,然后使用niagara vykon工作台软件将其上传到Tridium Jace。

此外,由于Jace中更改URL的问题,我不得不修改react路由器以使用MemoryHistory而不是常规的。

import { createMemoryHistory } from 'history'
  const memoryHistory = createMemoryHistory({
    initialEntries: [ '/' ],  // The initial URLs in the history stack
    initialIndex: 0,          // The starting index in the history stack
    keyLength: 6,             // The length of location.key
    // A function to use to confirm navigation with the user. Required
    // if you return string prompts from transition hooks (see below)
    getUserConfirmation: null
  });

const App = props => <Router history={memoryHistory}/>;

我要做的另一步骤是在站点中的nav.nav文件中添加一个名为home.html的重定向页面作为主页。这是脚本标签。这样会以全屏方式(而不是在嵌入菜单中)在jace上启动react应用。

<script>

window.location.replace("../file/index.html")
</script>