javascript - Webpack4 捆绑功能未定义
问题描述
我使用 webpack4 制作了一个包。制作捆绑文件是完美的,但我的简单网站无法正常工作。
我想在加载 html 页面后执行 getApple() 函数。但我得到的是未定义错误消息功能。
下面是我的源代码。
// index.js
function getApple () {
console.log('getApple');
}
// ./dist/main.js
! function(t) {
var a = {};
function o(e) {
if (a[e]) return a[e].exports;
var n = a[e] = {
i: e,
l: !1,
exports: {}
};
return t[e].call(n.exports, n, n.exports, o), n.l = !0, n.exports
}
o.m = t, o.c = a, o.d = function(e, n, t) {
o.o(e, n) || Object.defineProperty(e, n, {
enumerable: !0,
get: t
})
}, o.r = function(e) {
"undefined" != typeof Symbol && Symbol.toStringTag && Object.defineProperty(e, Symbol.toStringTag, {
value: "Module"
}), Object.defineProperty(e, "__esModule", {
value: !0
})
}, o.t = function(n, e) {
if (1 & e && (n = o(n)), 8 & e) return n;
if (4 & e && "object" == typeof n && n && n.__esModule) return n;
var t = Object.create(null);
if (o.r(t), Object.defineProperty(t, "default", {
enumerable: !0,
value: n
}), 2 & e && "string" != typeof n)
for (var a in n) o.d(t, a, function(e) {
return n[e]
}.bind(null, a));
return t
}, o.n = function(e) {
var n = e && e.__esModule ? function() {
return e.default
} : function() {
return e
};
return o.d(n, "a", n), n
}, o.o = function(e, n) {
return Object.prototype.hasOwnProperty.call(e, n)
}, o.p = "", o(o.s = 0)
}({
"./index.js": function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval('__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _babel_polyfill__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/polyfill */ "./node_modules/@babel/polyfill/lib/index.js");\n/* harmony import */ var _babel_polyfill__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_polyfill__WEBPACK_IMPORTED_MODULE_0__);\n\n\nfunction getApple () {console.log('getApple');}
...
// index.php
<head>
<script type="text/javascript" src="./dist/main.js<?php echo '?version=' . $_versionCode ?>"></script>
</head>
<body>
<script>getApple(); // not working: Uncaught ReferenceError: getApple is not defined</script>
</body>
有人可以帮我吗....
解决方案
似乎您的函数位于模块本身中,这意味着除非您发布它,否则您无法通过窗口对象获取它。因此,为了调用它,您可能必须在模块内调用您的函数或等到您的站点加载:
function getApple () {
console.log('getApple');
}
getApple()
// OR
window.onload = () => getApple()
或者,如果你想用 window 注册你的函数,然后像你一样稍后调用:
function getApple () {
console.log('getApple');
}
window.getApple = getApple;
推荐阅读
- linkedin - 在 API 调用中返回 {"id":"private"} 的公共配置文件
- android - 从 CameraX analyze() 导航到另一个片段会阻止当前片段的生命周期并冻结 UI
- php - JS(Jquery) 和 PHP Etag 在 Apache 上不起作用
- vba - 为什么每次单击 VBA 用户窗体进度条都会更新?
- docker - 我试图通过 docker 托管我的世界服务器并访问文件
- r - 无法在 R Shiny 应用程序中嵌入 Bookdown 网站
- java - 内部服务器错误 - 给定的 id 不能为空
- python - 如何遍历文件夹中的json文件并将它们转换为python中的csv文件?
- c# - 为什么 System.Data.Linq 为分页生成 ROW_NUMBER() 而不是 SQL Server 2012 的 OFFSET/FETCH
- gtk - GTK:如何以编程方式从 GSchema 枚举中获取刻痕和值