класс экспорта / импорта javascript, такой как узел модуля, в электрон с помощью веб-пакета - PullRequest
0 голосов
/ 07 декабря 2018

В контексте базового приложения electon-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'

Но у меня возникает эта ошибка, когда я выполняю код в электронном виде:

Uncaught TypeError: _service_connectionManager__WEBPACK_IMPORTED_MODULE_8__.default.getConnection не является функцией

Я записал в консоль этот класс обслуживания "ConnectionManager", и у меня есть такой результат (так что он действительно существует):

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

Кажется, чтоокончательный пакет js-модуля содержит класс ConnectionManager

1 Ответ

0 голосов
/ 10 декабря 2018

Кажется, что вы смешиваете модули commonjs с модулями ES неправильно.

Существует множество модулей (включая встроенные узлы), у которых нет экспорта по умолчанию .Чтобы импортировать такой модуль, вам нужно использовать * as moduleAlias или { exportedField } в вашем операторе импорта.Попробуйте переписать ваш код следующим образом:

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 является псевдонимом для текущей области:

import ConnectionManager from '../service/connectionManager'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...