在 Electron 中加载时区库时出现问题

Problems loading timezone library in Electron

我的 index.html 有以下脚本。

<script src="js/moment.js"></script>
<script src="js/moment-timezone-with-data.min.js"></script>

当我 运行 电子应用程序时,我得到一个 Uncaught Error: Cannot find module 'moment'。时区库似乎无法判断我已经包含了 moment.js。

这似乎是 Electron 的问题,因为在常规 HTML 文件结构中做同样的事情会导致一切正常。

编辑: 我尝试以下列方式修改我的代码。

<script src="js/moment.js"></script>
<script onload="window.moment = require(__dirname+'/js/moment.js');" src="js/moment-timezone-with-data.min.js"></script>

这似乎仍然没有产生任何结果。

万岁!这个问题似乎可以从这个答案中解决。

复制粘贴,答案如下:

<!-- Insert this line above script imports  -->
<script>if (typeof module === 'object') {window.module = module; module = undefined;}</script>

<!-- normal script imports etc  -->
<script src="scripts/jquery.min.js"></script>    
<script src="scripts/vendor.js"></script>    

<!-- Insert this line after script imports -->
<script>if (window.module) module = window.module;</script>

基本上,在使用脚本附件之前插入第一行和最后一行。

这在我目前正在进行的电子项目中对我有用:

<head>
  <script>if (typeof module === 'object') {window.module = module; module = undefined;}</script>

  <script type="application/javascript" src="js/jquery-2.1.3.min.js"></script>
  <script type="application/javascript" src="js/bootstrap.min.js"></script>
</head>

如果你想在 html 中写 javascript 与 electron 无关,你可以执行以下操作:

<script>
  /* Javascript */
</script>
<script>if (window.module) module = window.module;</script>
<script>
  const ipc = require('electron').ipcRenderer;
  /* Rest of electron related javascript */
</script>

太棒了!这解决了我的时刻和时区问题,在应用程序和浏览器中工作正常

<script>
    if (typeof module === 'object') {window.module = module; module = undefined;}
</script>

我的代码:

    <!-- inject:js -->
    <script src="lib/index.js"></script>
    <script src="lib/moment/moment-with-locales.min.js"></script>
    <script src="lib/moment-timezone/moment-timezone-with-data.min.js"</script>
    <script src="lib/mdg-foundation/mdg2.js"></script>
    <!-- endinject -->
    <script>if (window.module) module = window.module;</script>