首页 > 解决方案 > 将模块导入另一个模块时出现“来自 UglifyJs 无效分配的 xx.js 错误”

问题描述

由于保密协议,我无法发布确切的代码,所以我会尽力而为。Javascript 不是我的字符串套装,但我为我的团队采用了它。

背景:

我构建了一个模块,它基本上将执行一个非常简单的任务,可以作为其他项目的依赖项导入,然后通过添加标签添加到项目中。

我想让它尽可能地轻量级,让添加它的应用程序完成繁重的工作,并让导入运行和编译 Angular 代码。

SimpleApp 的代码:

除了标有的地方外,一切似乎都运行良好/* Potential Issue */

在简单模块中,我有几个文件:
simpleApp.js - 完成必要工作的主 js 文件
simpleApp.html - simpleApp.js
innerProvider.js的 html - 一个 module.service,它在从 simpleApp.js 调用——这个导入似乎是问题的根源。


全部在 companySimpleApp 包中:

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: '@'
}

简单应用程序.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 等:

/* 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>
...

以及另一个使用 simpleApp 的 html 和 js 文件

<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/innerProviderfrom时,代码似乎已构建,simpleApp.js但随后我收到一条错误消息,指出 innerProvider 是未解析的引用或类似的东西。

我要问的是为什么我在导入我构建的 innerProviderModule 时可能会看到此错误的一些帮助。我是否需要将 webpack 和所有这些添加到我的 simpleApp 项目中,即使它似乎在我的本地主机上运行良好?

非常感谢任何帮助或想法。谢谢!当我在深夜发布时碰到了这个。

编辑:它似乎不像我拥有的​​ innerProvider 中的“=>”

标签: javascriptangularnpmwebpackuglifyjs

解决方案


我构建了使用带有'webpack -p'的simpleApp的包,这不是在simpleApp上完成的。所以,看起来发生的事情是 simpleApp 没有被缩小或其他东西,并且不喜欢提供程序代码中的几行(即:“=>”,“let”等......)

因此,我没有让 simpleApp 有更多的依赖项,而是简单地编写了可以通过 webpack -p 的代码。

您还应该能够删除“-p”标志

希望这可以帮助某人。


推荐阅读