我正在使用电子和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
这是我的应用程序中一个工作的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。
原来我应该用 window.require
而不是 require