使用webpack将模块模块之类的javascript类导出/导入到electronic

时间:2018-12-07 18:47:52

标签: node.js webpack electron

在基本的Electron-vue应用程序的上下文中,我想创建自己的javascript类,并将其用于主进程或渲染器或vue组件中。

我创建了JS类,但找不到导出类的好方法。

通过相同的错误完成在网络中编写导入/导出模块的所有可能性:未定义的导出

"use strict"

import fs from 'fs'
import typeorm from 'typeorm'
import Public from './../entity/Public'

class ConnectionManager
{
    constructor(){}

    getConnection(type, name, options) {

    }
}

module.exports = ConnectionManager

但是看起来其他js文件的工作原理与vue-router js完美匹配,可路由到vue.js应用程序中:

import Vue from 'vue'
import Router from 'vue-router'

Vue.use(Router)

export default new Router({
  routes: [
    {
      path: '/',
      name: 'home',
      component: require('@/components/Home').default
    }
]
})

我用Webpack打包我的代码,libraryTarget输出为:commonjs2

我似乎将babel-loader与webpack一起使用

节点版本:10.13.0

电子:3.0.10

通天塔:6

编辑:

我尝试使用此语法类js文件:

"use strict"

import * as fs from 'fs'
import * as typeorm from 'typeorm'
import {Public} from './../entity/Public'

export default class ConnectionManager
{
    constructor(){}

    getConnection(type, name, options) {

    }
}

使用这种导入语法:

import ConnectionManager from './../service/connectionManager'

但是当我在电子程序中执行代码时,我遇到了这个错误:

  

未捕获的TypeError:   _service_connectionManager__WEBPACK_IMPORTED_MODULE_8 __。default.getConnection   不是功能

我在控制台上记录了该服务类“ ConnectionManager”,并且得到了这个结果(因此它确实存在):

ƒ ConnectionManager() {
    babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0___default()(this, ConnectionManager);
}

似乎最终的js模块Webpack包含ConnectionManager类

1 个答案:

答案 0 :(得分:0)

似乎您以错误的方式将commonjs模块与ES模块混合使用。

有很多模块(包括内置节点)没有default export。要import这样的模块,您需要在import语句中使用Fragment* as moduleAlias。尝试通过这种方式重写代码:

{ exportedField }

由于此类是默认值exported,因此可以使用以下构造将import用作默认字段,其中ConnectionManager是当前作用域的别名:

import * as fs from 'fs'
import * as typeorm from 'typeorm'
import { Public } from '../entity/Public'

export default class ConnectionManager
{
    constructor(){}

    getConnection(type, name, options) {

    }
}