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

问题描述 投票:0回答:1

我正在使用电子和svelte作为我的前端框架。

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

当我尝试使用 require - 它返回一个空对象.当我使用 require 在一个svelte组件里面,它工作得很好。(我已经在一个svelte组件中设置了 nodeIntegration: true 在我的electron.js文件中)。)

我怎样才能解决这个问题?

EDIT: 举个例子:

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

我也得到了一个Rollup警告。(!) 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

javascript node.js electron commonjs svelte
1个回答
0
投票

这是我的应用程序中一个工作的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 组件,我在一个带有电子版的svelte应用程序上使用,而且,它很好用。打印 fs 对象到控制台,而且它不是空的

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

nodeIntegration 设置为true,这是我的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>

而我使用的是电子版8. 2. 5。


0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.