включить пакет, скомпилированный с веб-пакетом для использования в другом файле js - PullRequest
1 голос
/ 30 ноября 2019

У меня есть следующая структура моего приложения:

index.js

const app = require("./app")
exports.api = app(...)

app.js

//all the imports goes here
//and exporting the main function
module.exports = app => {...}

Теперь мне нужно связать app.js с веб-пакетом, но index.js должен остаться без изменений

Вопрос в том, как связать app.js, как мне require это основная функция appот index.js?

После веб-упаковки app.js Я получаю сообщение об ошибке в index.js, в котором говорится, что «приложение не является функцией», что имеет смысл, поскольку содержимое app.js теперь упаковано в персонал веб-пакета.

Любые предложения приветствуются.

Ответы [ 2 ]

2 голосов
/ 01 декабря 2019

Ваш пакет "app" должен быть экспортирован как commonjs .

module.exports = {
  //...
  output: {
    library: 'app',
    libraryTarget: 'commonjs',
  }
};

Возвращаемое значение вашей точки входа будет назначено объекту экспорта с помощьюoutput.library значение. Как следует из названия, это используется в средах CommonJS.

Итак, в вашем index.js вы можете require('./dist/bundle-name.js').

0 голосов
/ 01 декабря 2019

кажется хаком, но я заставил его работать, добавив промежуточный файл и настроив app.js и index.js, как показано ниже:

index.js

const app = require("./bundle").app //changed to named import
exports.api = app(...)

bundle.js // промежуточный файл, который теперь является точкой входа для веб-пакета

import app from "./app"
exports.app = app

app.js

//all the imports goes here
//and exporting the main function
export default app => {...} //changed to default export

Если у кого-то есть объяснение, почему он работает таким образом и как его упростить, не добавляя этот файл bundle.js, вы можете прокомментировать!

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