2

根据 Kentico 技术支持顾问的说法,为了让我的 create-react-app 应用程序在 IE11 上呈现,我必须更改 node_modules -> kentico-cloud-delivery -> package.json 文件中的以下代码行:

"main": "./_bundles/kentico-cloud-delivery-sdk.browser.umd.min.js"

在此更改之后,我的反应应用程序正在我的本地 IE 上呈现,但问题是我如何将此更改推送到 bitbucket 中,以便反应应用程序也可以在服务器上的 IE11 上呈现。

关于这一点,我们通常不会将 node_modules 推送到 bitbucket 并将其放入 .gitignore 文件中,请告诉我如何解决这个问题。注意:我的项目是一个 create-react-app 应用程序。

4

3 回答 3

1

通过不将 npm-modules 推送到 bitbucket 服务器,这意味着运行在那里的应用程序将从通常称为 package.json 的文件中的列表中获取包。因此,您可能正在将 .json 文件推送到包含所有依赖项信息的 bitbucket,您可以对其进行编辑以在 IE11 中呈现您的应用程序。

干杯!

于 2019-03-25T09:33:06.860 回答
1

如何忽略存储库中的一个文件并忽略文件夹中的其余文件的问题的确切答案是使用! 模式格式

node_modules
!node_modules/kentico-delivery-sdk/package.json

!但! npm install/yarn命令仍然会替换package.json内容

于 2019-03-25T20:13:35.463 回答
1

我想链接建议的解决方法是设置react-scripts加载适当的包的问题以及所有上下文的链接问题

问题本身是因为parse5没有将 ES5 代码发布到 npm 导致构建失败。

  • 所以这个问题的根本原因是 parse5 库。

可能的解决方案

1) create-react-app一般建议升级到 v.2+ ,这也在 Kentico Cloud javascript SDK 的常见问题解答部分中引用。

2) 如果您不顾所有建议而想要放置解决方法,因为它是对自动管理的手动更改,node_modules您需要确保在构建之前将包的更改保留在服务器上。因此,在npm install/之后,yarn您将编辑 package.json 文件node_modules

脚本(名为 ieworkaround.js写在节点中)看起来像:

const fs = require('fs');
const KCPackagePath = 'node_modules/kentico-cloud-delivery/package.json';
const package = require(KCPackagePath);

package.main = "./_bundles/kentico-cloud-delivery-sdk.browser.umd.min.js"

fs.writeFile(configPath, JSON.stringify(package, undefined, 2), function (err) {
  if (err) {
    console.error('Error while writing to file: ' + KCPackagePath);
    throw err;;
  }
  console.info('Package was successfully updated.')
});

package.json并在您的应用程序中定义一个脚本

{
  ...
  "scripts": {
    "workaround": "node workaround.js"
  }
  ...
}
于 2019-03-25T20:07:22.557 回答