不能在 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
我使用带有 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