要求没有babel的电子文件

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了要求没有babel的电子文件相关的知识,希望对你有一定的参考价值。

我正在尝试将Web应用程序转换为电子应用程序。我有多个函数,在我使用转换器导入到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
答案

应该有2个js上下文,一个在电子应用程序中运行,一个在节点中运行。如果您处于电子上下文(类似于浏览器js上下文),则无法直接从目录中要求脚本。

我只是假设这是因为我们没有得到很多关于你的问题的信息,另一个答案应该已经解决了你的问题。

尝试将您的js文件包含在index.html中,看看是什么。

编辑:因为它是babel的一个Transpiling错误,所以当它应该为浏览器进行转换时,babel可能正在为节点进行转换。

另一答案

您可以通过创建源文件然后添加module.exports赋值来从文件中导出一些功能/变量/等,从而轻松地使用NodeJS创建一个简单的本地模块。在您的情况下,类似于名为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()

以上是关于要求没有babel的电子文件的主要内容,如果未能解决你的问题,请参考以下文章

没有名称的Javascript ES6导入[重复]

电子中的http协议不能要求渲染器

vue-cli中的babel配置文件.babelrc详解

我应该如何使用 Outlook 发送代码片段?

babel-preset-react-app 没有拾取环境变量

如何使用“babel-node --presets es2015,stage-3”为电子应用程序设置 npm start