Webpack 获得;定义不能用于间接;与网页包绑定时出错

Webpack 获得;定义不能用于间接;与网页包绑定时出错,webpack,requirejs,amd,Webpack,Requirejs,Amd,当我尝试绑定用AMD编写的代码时,我会在使用define()函数时收到错误Uncaught error:define不能被间接使用。我怎样才能解决这个问题?将define()更改为import不是一个选项,因为整个项目都是用RequireJS AMD编写的 这是我的网页包配置: const path = require("path"); module.exports = { entry: { app: './app/js/app/main.js' },

当我尝试绑定用AMD编写的代码时,我会在使用
define()
函数时收到错误
Uncaught error:define不能被间接使用。我怎样才能解决这个问题?将
define()
更改为
import
不是一个选项,因为整个项目都是用RequireJS AMD编写的

这是我的网页包配置:

const path = require("path");

module.exports = {
    entry: {
        app: './app/js/app/main.js'
    },
    output: {
        path: path.resolve(__dirname, 'app/build'),
        filename: 'main.js'
    },
    module: {
        rules: [{
            test: /\.js?$/,
            exclude: /node_modules/,
            loader: 'babel-loader',
            query: {
                presets: ['@babel/env']
            }
        }]
    }
};
我的输入文件:

define('app', [
    'lib/angular',
    'lib/has',
], function (angular, has) {
    'use strict';

    return angular.module('app', ['ngAnimate', 'ngSanitize', 'angular-require'])

}, function(error) {
    console.error(error);
});
这是它给我的输出:

!function (e) {
    var n = {};

    function r(t) {
        if (n[t]) return n[t].exports;
        var o = n[t] = {i: t, l: !1, exports: {}};
        return e[t].call(o.exports, o, o.exports, r), o.l = !0, o.exports
    }

    r.m = e, r.c = n, r.d = function (e, n, t) {
        r.o(e, n) || Object.defineProperty(e, n, {enumerable: !0, get: t})
    }, r.r = function (e) {
        "undefined" != typeof Symbol && Symbol.toStringTag && Object.defineProperty(e, Symbol.toStringTag, {value: "Module"}), Object.defineProperty(e, "__esModule", {value: !0})
    }, r.t = function (e, n) {
        if (1 & n && (e = r(e)), 8 & n) return e;
        if (4 & n && "object" == typeof e && e && e.__esModule) return e;
        var t = Object.create(null);
        if (r.r(t), Object.defineProperty(t, "default", {
            enumerable: !0,
            value: e
        }), 2 & n && "string" != typeof e) for (var o in e) r.d(t, o, function (n) {
            return e[n]
        }.bind(null, o));
        return t
    }, r.n = function (e) {
        var n = e && e.__esModule ? function () {
            return e.default
        } : function () {
            return e
        };
        return r.d(n, "a", n), n
    }, r.o = function (e, n) {
        return Object.prototype.hasOwnProperty.call(e, n)
    }, r.p = "", r(r.s = 0)
}([function (e, n, r) {
    var t;
    void 0 === (t = function () {
        "use strict";
        r(1)("app", ["lib/angular", "lib/has"], function (e, n) {
            return e.module("app", ["ngAnimate", "ngSanitize", "angular-require"])
        }, function (e) {
            console.error(e)
        })
    }.apply(n, [])) || (e.exports = t)
}, function (e, n) {
    e.exports = function () {
        throw new Error("define cannot be used indirect")
    }
}]);
但是,条目文件由RequireJS配置文件导入:

var bower_components = bower_components || 'bower_components';

require.config({
    paths: {
        'lib/angular': bower_components + '/angular/angular.min',
        'lib/angular-animate': bower_components + '/angular-animate/angular-animate.min',
        'lib/sprintf': bower_components + '/sprintf/dist/sprintf.min',
        'lib/twitter-text': bower_components + '/twitter-text-js/js/twitter-text',
        'lib/jsdiff': bower_components + '/jsdiff/diff',
        es6: "lib/requirejs-babel/es6",
        babel: "lib/requirejs-babel/babel-5.8.34.min",
        'babel-plugin-module-resolver': 'lib/babel-plugin-module-resolver-standalone/index'
    },
    babel:{
        fileExtension: ".js"
    },
    packages: [{
            name: 'app',
            location: 'build' //This directs to the file compiled by webpack
        }, {
            name: 'app/blogLegacy',
            location: 'apps/blog-legacy'
        },{
            name: 'app/blog',
            location: 'apps/blog-modular'
        },{
编辑

完全错误:

Uncaught Error: define cannot be used indirect
    at module.exports (webpack:///(webpack)/buildin/amd-define.js?:2:8)
    at eval (main.js:1)
    at Object../app/js/app/main.js (main.js?bust=1558595950937:96)
    at __webpack_require__ (main.js?bust=1558595950937:20)
    at main.js?bust=1558595950937:84
    at main.js?bust=1558595950937:87
module.exports @ amd-define.js:2
(anonymous) @ main.js:1
./app/js/app/main.js @ main.js?bust=1558595950937:96
__webpack_require__ @ main.js?bust=1558595950937:20
(anonymous) @ main.js?bust=1558595950937:84
(anonymous) @ main.js?bust=1558595950937:87
angular.js:38 

Uncaught Error: [$injector:modulerr] http://errors.angularjs.org/1.3.20/$injector/modulerr?p0=app&p1=Error%3A%20%5B%24injector%3Anomod%5D%20http%3A%2F%2Ferrors.angularjs.org%2F1.3.20%2F%24injector%2Fnomod%3Fp0%3Dapp%0A%20%20%20%20at%20http%3A%2F%2Fgo.development%2Fbower_components%2Fangular%2Fangular.min.js%3Fbust%3D1558595950937%3A6%3A417%0A%20%20%20%20at%20http%3A%2F%2Fgo.development%2Fbower_components%2Fangular%2Fangular.min.js%3Fbust%3D1558595950937%3A21%3A412%0A%20%20%20%20at%20a%20(http%3A%2F%2Fgo.development%2Fbower_components%2Fangular%2Fangular.min.js%3Fbust%3D1558595950937%3A21%3A53)%0A%20%20%20%20at%20http%3A%2F%2Fgo.development%2Fbower_components%2Fangular%2Fangular.min.js%3Fbust%3D1558595950937%3A21%3A296%0A%20%20%20%20at%20http%3A%2F%2Fgo.development%2Fbower_components%2Fangular%2Fangular.min.js%3Fbust%3D1558595950937%3A35%3A46%0A%20%20%20%20at%20r%20(http%3A%2F%2Fgo.development%2Fbower_components%2Fangular%2Fangular.min.js%3Fbust%3D1558595950937%3A7%3A322)%0A%20%20%20%20at%20g%20(http%3A%2F%2Fgo.development%2Fbower_components%2Fangular%2Fangular.min.js%3Fbust%3D1558595950937%3A34%3A399)%0A%20%20%20%20at%20cb%20(http%3A%2F%2Fgo.development%2Fbower_components%2Fangular%2Fangular.min.js%3Fbust%3D1558595950937%3A38%3A135)%0A%20%20%20%20at%20d%20(http%3A%2F%2Fgo.development%2Fbower_components%2Fangular%2Fangular.min.js%3Fbust%3D1558595950937%3A17%3A381)%0A%20%20%20%20at%20tc%20(http%3A%2F%2Fgo.development%2Fbower_components%2Fangular%2Fangular.min.js%3Fbust%3D1558595950937%3A18%3A179)
    at angular.js:38
    at angular.js:4154
    at r (angular.js:326)
    at g (angular.js:4115)
    at cb (angular.js:4041)
    at d (angular.js:1455)
    at tc (angular.js:1476)
    at Jd (angular.js:1370)
    at HTMLDocument.<anonymous> (angular.js:26446)
    at j (jquery.js:3148)
Uncaught错误:无法间接使用define
在module.exports(webpack://(webpack)/buildin/amd define.js?:2:8)
评估时(main.js:1)
在Object../app/js/app/main.js(main.js?bust=15585950937:96)
在网页上需要(main.js?bust=15585950937:20)
在main.js?bust=15585950937:84
在main.js?bust=15585950937:87
module.exports@amd define.js:2
(匿名)@main.js:1
./app/js/app/main.js@main.js?半身像=15585950937:96
__webpack_require_@main.js?bust=15585950937:20
(匿名)@main.js?bust=15585950937:84
(匿名)@main.js?bust=15585950937:87
J.js:38
未捕获错误:[$injector:moduler] http://errors.angularjs.org/1.3.20/$injector/modulerr?p0=app&p1=Error%3A%20%5B%24injector%3Anomod%5D%20http%3A%2F%2F%2errors.angularjs.org%2F1.3.20%2F%24injector%2nomod%3Fp0%3Dapp%0A%20%20%20%20at%20http%3A%2F%2Fgo.development%2Fbower\u组件%2Fangular.min.js%3Fbust%3d1559595950937%3A6%3A417%0A%20%20%20at%20http%2Fgo.2F%2F%2Fnt%2Fbower_组件%2Fbower_组件%2Fbower_组件%2Fbower%2Fbower.min.js%3Fbust%3D1558595950937%3A21%3A4%0A%20%20%20%20at%20a%20(http%3A%2F%2Fgo.development%2Fbower_组件%2Fbower.min.js%3Fbust%3D1558595950937%3A21%3A53)%0A%20%20%20%20at%20http%3A%2F%2Fgo.开发%2Fbower_组件%2Fangular%2Fangular.min.js%3Fbust%3D1558595950937%3A21%3A296%0A%20%20%20%20at%20http%3A%2F%2Fgo.开发%2Fbower_组件%2Fangular%2Fangular.min.js%3Fbust%3D155859595950937%3A346%0A%20%20%20%20r%20%20%20(http%3A%2F%2Fgo.development%2Fbower_components%2Fangular.min.js%3Fbust%3D1558595950937%3A7%3A322)%0A%20%20%20%20at%20g%20(http%3A%2F%2Fgo.development%2Fbower_components%2Fangular.min.js%3Fbust%3D1558595950937%3A34%3A399)%0A%20%20%20%20%20%20at%20cb%20(http%3A%2F%2Fgo.development%2Fbower_components%2Fangular.min.js%3Fbust%3D1558595950937%3A38%3A135)%0A%20%20%20%20at%20d%20(http%3A%2F%2Fgo.development%2Fbower_components%2Fangular.min.js%3Fbust%3D1558595950937%3A17%3A381)%0A%20%20%20%20%20%20at%20tc%20(http%3A%2F%2Fgo.development%2Fbower\u组件%2Fangular%2Fangular.min.js%3Fbust%3D1558595950937%3A18%3A179)
在角上。js:38
在angular.js:4154
在r(angular.js:326)
在g处(angular.js:4115)
在cb(angular.js:4041)
在d处(angular.js:1455)
在tc(angular.js:1476)
在Jd(angular.js:1370)
在HTMLDocument上。(angular.js:26446)
在j(jquery.js:3148)

您似乎有一些模块依赖项,它们以一种奇怪的方式使用
定义
(不要使用标准umd样板)

您必须找到哪个是有问题的依赖项,然后在该库的网页包配置中执行类似操作:

module: {
    noParse: /node_modules\/json-schema\/lib\/validate\.js/
}
存在此问题的一些已知模块:
set getter
jquery migrate
Dexie

在webpack github页面上还打开了许多问题:



为了安全起见,我删除了所有节点模块,将我的
包.json
缩减为
“@babel/core”:“^7.4.4”、
“@babel/preset env”:“^7.4.4”、
“babel loader”:“^8.0.5”、“webpack”:“^4.30.0”、“webpack dev server”:“^3.3.1”、“webpack cli并再次运行了Thread安装。编译了webpack文件,但我仍然收到相同的错误。你是什么意思?这些是我正在使用的所有软件包,加上npm使用的默认模块。还有bower_组件和一个lib目录,它们在集成webpack之前工作。我编辑了我的问题,以包含完整的错误,以防万一这是有帮助的。如果我把
noParse:/node\u modules/
放进去,这个错误就会消失,所以我认为你是对的。我只是不知道是哪个模块导致了这个错误。我会尝试一个接一个地删除依赖项,只是看看哪个有这个问题,然后在无解析中使用它。。。