我正在尝试将网络应用程序转换为电子应用程序。我有多个函数,在我使用转换器导入到main.js的不同文件中。
但是,每当我尝试在我的电子应用程序中执行此操作时,我遇到了一个问题,我正在使用模块来避免使用php来访问我的数据库。相反,我在npm使用mysql模块。
我想将此函数保存在自己的文件中,然后在main.js中要求它。当我尝试用babel进行转换时,我得到一个关于Net.Connection无法正常工作的错误(或者沿着这些行的东西)。据我了解,这是因为Node的工作原理。我很乐意解决这个问题,但我希望有一种方法可以将这个功能保存在另一个文件中,并导入它而不必使用babel。
function loadColourFilter(){
var mysql = require('mysql');
let query_result;
var connection = mysql.createConnection({
host : 'xxxxxxxxxxxx',
user : 'xxxxxxxxxxxx',
password : 'xxxxxxxxxxxx',
database : 'xxxxxxxxxxxx'
});
connection.connect();
let query = "xxxxxxxxxxxxxxxx";
connection.query(query, function (error, results, fields) {
});
connection.end();
return (query_result);
}
编辑:我删除了函数的某些部分以保证凭据的安全性等等。我很确定他们的缺席在尝试解决这个问题时不会有任何改变。
编辑: 我的项目目录基本上是
src
--- js
--- --- main.js
--- functionFile.js // This would be where my loadColourFilter function above would be saved
--- node_modules
--- --- ...
--- index.html // js/main.js is referenced in a script tag here.
--- main.js // Where the electron window is created.
--- package.json
答案 0 :(得分:1)
应该有2个js上下文,一个在电子应用程序中运行,一个在节点中运行。如果您处于电子上下文(类似于浏览器js上下文),则无法直接从目录中要求脚本。
我只是假设是这种情况,因为我们没有为您的问题获得大量信息,而另一个答案应该已经解决了您的问题。
尝试将您的js文件包含在index.html中,看看是什么。
编辑:因为它是babel的一个Transpiling错误,所以当它应该为浏览器进行转换时,babel可能正在为节点进行转换。
答案 1 :(得分:0)
您可以使用NodeJS轻松创建一个简单的本地模块,方法是创建一个源文件,然后添加一个module.exports赋值,从文件中导出一些功能/变量/ etc。在您的情况下,类似于名为colourFilter.js的文件,其内容为:
function load(){
var mysql = require('mysql');
let query_result;
var connection = mysql.createConnection({
host : 'xxxxxxxxxxxx',
user : 'xxxxxxxxxxxx',
password : 'xxxxxxxxxxxx',
database : 'xxxxxxxxxxxx'
});
connection.connect();
let query = "xxxxxxxxxxxxxxxx";
connection.query(query, function (error, results, fields) {
});
connection.end();
return (query_result);
}
module.exports = load
然后在您希望使用它的代码中,通过执行以下操作来包含它:
loadColourFilter = require('colourFilter.js')
使用像
这样的功能let result = loadColourFilter()
这是将代码拆分为多个文件/类/模块的简单方法,但仍然保留一个主文件/类/模块作为面向公众的部分或入口点的重要文件/类/模块。当然,你不必使用我上面使用过的名字:P
如果您想制作一个对象式模块,您可以改为输出像
这样的对象module.exports = {
load
}
或者
module.exports = {
load: loadFunctionNameInThisFile
}
然后像
一样使用它const colourFilter = require('colourFilter.js')
let result = colourFilter.load()