«ОШИБКА в xx. js из Uglify Js Неверное назначение» при импорте модуля в другой модуль - PullRequest
0 голосов
/ 10 апреля 2020

Я не могу опубликовать точный код из-за NDA, поэтому я сделаю все возможное. Javascript не мой строковый костюм, но я взял его для своей команды.

Справочная информация:

Я создал модуль, который в основном будет выполнять очень простую задачу и может быть импортирован как зависимость в других проектах, а затем добавили в проект, добавив тег.

Я хотел, чтобы это было как можно более легким, и чтобы приложение, которое его добавляло, выполняло тяжелую работу и выполняло операции импорта и compile Angular code.

Код для SimpleApp:

Кажется, все работает нормально, за исключением мест, отмеченных /* Potential Issue */

В простом модуле у меня есть несколько file:
simpleApp. js - основной js файл, который выполняет необходимую работу
simpleApp. html - html из simpleApp. js
innerProvider. js - это module.service, который выполняет некоторую работу при вызове из simpleApp. js - этот импорт кажется более серьезной проблемой.


Все в пределах пакета компании SimplePapp:

simpleApp. js:

import angular from "angular"
/* I believe this to be the issue */
import innerProviderModule from "./pathToFile/innerProvider /* Potential Issue */

/* Potential Issue */
angular.module('simpleApp', [innerProviderModule]).component('simpleComponent, {
    controller: ['$scope, 'innerProvider', ..., function($scope, innerProvider, ...) {

    /* does work */

}],
template: require("./simpleApp.html"),
bindings: {
    bind1: '@',
    bind2: '@'
}

simpleApp. html :

<div>

do stuff
call stuff

</div>

innerProvider. js:

import angular from "angular"


const innerProviderModule = angular.module('innerProvider', [])
    .service('innerProvider', function (%http, ...) {
        this.doWork = function (param1) {
            retStmt = doSomething(param1)
            return retStmt
        }
    });
export default innerProviderModule.name;

Все здесь строится правильно и будет работать так, как сказано. Я могу собрать этот пакет, а также тот, который использует его, и у меня есть рабочая веб-страница со службами simpleApp. Тем не менее, это когда я сам все размещаю.

Код для более крупного сервиса с использованием SimpleApp:

В другом проекте у меня это перечислено как зависимость "simpleApp = 1.0" это может быть отличается от ожидаемого из-за внутренней работы моей компании, но это работает .
Появляется в каталоге node_module

Затем у меня есть модуль для веб-страницы, который загружается в simpleApp и имеет все остальные пакеты типа angular, babel, uglify, webpack и т. д. c:

/* Potential Issue */
import "companySimpleApp/simpleApp.js"

export default angular
    .module("app", [otherDependencies, simpleApp])
    .config(function ($stateProvider, $stuff){

        someMappingsForUrls
    });

...
    <script src="../node_modules/companySimpleApp/simpleApp.js"></script>
...

и другой файл html и js, использующий simpleApp

<div>
<simpleApp bind1='{{value}}'></simpleApp>

</div>

Ошибка:

Теперь все будет нормально работать на моем локальном хосте, и я могу полностью использовать более крупный сервис, используя сайт SimpleApp с simpleApp. Тем не менее, когда я строю это (npm run webpack) на сервисе с использованием simpleApp, я получаю следующую ошибку, даже если на моем локальном хосте все работает нормально:

ERROR in bundle.js from UglifyJs
Invalid assignment [bundle.js:146461,67]
npm ERR! code ELIFECYCLE
npm ERR! errno 2
npm ERR! @ webpack: `webpack -p`
npm ERR! Exit status 2
npm ERR!
npm ERR! Failed at the @ webpack script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

........

При удалении кода создается код import innerProviderModule from "./pathToFile/innerProvider из simpleApp.js, но затем я получаю сообщение об ошибке, говорящее о том, что innerProvider - это неразрешенная ссылка или что-то в этом роде.

Я прошу дать некоторую помощь о том, почему я вижу эту ошибку, когда Я импортирую созданный мной модуль innerProviderModule. Нужно ли мне добавлять веб-пакет и все такое в мой проект simpleApp, хотя на моем локальном хосте все работает нормально?

Любая помощь или идеи очень ценятся. Спасибо! Подняв это, поскольку я отправил это поздно ночью.

Редактировать: Кажется, что не похоже на "=>" в innerProvider, который у меня есть

1 Ответ

0 голосов
/ 10 апреля 2020

Я собрал пакет, который использует simpleApp с 'webpack -p', чего не было в simpleApp. Итак, это выглядело так, как будто произошло так, что simpleApp не был минимизирован или что-то в этом роде и ему не нравилось несколько строк в коде провайдера (ie: "=>", "let", et c ...)

Таким образом, вместо того, чтобы у simpleApp было больше зависимостей, я просто написал код, который передал бы webpack -p.

Вы также можете просто удалить флаг "-p"

Надеюсь, это кому-нибудь поможет.

...