不能在 svelte electron 中要求 JS 文件中的节点模块

Can't require node modules in JS files in svelte electron

我使用带有 svelte 的 electron 作为我的前端框架。

我有 JS 文件,其中包含我的 svelte 组件使用的函数。

当我尝试使用 require 导入节点模块时 - 它 returns 是一个空对象。 当我在 svelte 组件中使用 require 时,它工作正常。 (我在 electron.js 文件中设置了 nodeIntegration: true)。

我该如何解决这个问题?

编辑: 一个例子:

<!--SvelteComponent.svelte-->
<script>
  import {func} from "./jsFile";
</script>
//jsFile.js
const fs = require("fs"); // This require returns an empty object
export function func {...}

我也收到汇总警告:(!) Plugin node-resolve: preferring built-in module 'fs' over local alternative at 'fs', pass 'preferBuiltins: false' to disable this behavior or 'preferBuiltins: true' to disable this warning

这是我的应用程序中一个工作的 Svelte 组件的片段。所有导入或需要的对象都可以正常工作。

<script>
    import '../../../node_modules/materialize-css/dist/css/materialize.css';
    import '../../../css/material-icons-svelte.css';  // we'd have to adjust the font paths!! check extra.css
    import '../../../node_modules/codemirror/lib/codemirror.css';
    import '../../../node_modules/materialize-css/dist/js/materialize.js';

    const {getState, getStore} = require('../../../dist/store/store.renderer');
    const {ipcRenderer} = require('electron');
    const _ = require('lodash');

编辑

我将它添加到我的 App.svelte 组件中,我在带有 electron 的 svelte 应用程序上使用它,而且它可以正常工作。将 fs 对象打印到控制台并且它不为空

    const fs = require('fs')
    console.log(fs);

nodeIntegration 设置为真,这是我的 index.html:

<!doctype html>
<html>
<head>
    <meta charset='utf8'>
    <meta name='viewport' content='width=device-width'>

    <link rel='stylesheet' href='../../../css/global.css'>
    <link rel='stylesheet' href='../../../dist/app/myapp/extra.css'>
    <link rel='stylesheet' href='../../../dist/app/myapp/bundle.css'>
</head>

<body class="grey lighten-4">
    <script src='../../../dist/app/myapp/bundle.js'></script>
</body>
</html>

而且我正在使用 electron 8.2.5

原来我应该用window.require而不是require