javascript - 外部 JS 文件中的函数未被调用

标签 javascript node.js firebase webpack

我正在使用 webpack 和 firebase。

我的 package.json 中有这一行 > "start": "webpack-dev-server ./index.js",

在我的index.js 文件中我有函数

logUserIn(){
  //does stuff
};

在我的index.html 文件中我有这一行> <input type="submit" onclick=logUserIn() value="Log in">

当我单击该按钮时,出现此错误 > Uncaught ReferenceError: logUserIn is not defined

我的index.html 文件中也有这一行> <script src="bundle.js"></script>应该链接到包含index.js 的捆绑文件,正确吗?

最后,我在index.js中做了一个console.log,显示console.log('hello') ,当我刷新页面时,会出现 hello,这意味着index.html正在通过bundle.js调用index.js,那么它到底为什么不能识别我的方法名称呢?

这绝对不是一个错字,因为我已经复制并粘贴了

最佳答案

当您使用 Webpack 时,假定您使用 modules 。如果您的代码不是这样组织的,则可能会产生一些问题。

特别针对您的问题,您的函数 logUserIn() 在那里,但它位于模块内部,这意味着它是私有(private)函数。它在全局范围内不可见,因此您的 index.html 无法“看到”调用它的函数。

为了使其在全局范围内可用,您需要导出该函数。

但是,除非您有特定原因在 HTML 中使用 logUserIn(),否则我建议您切换代码。通常,您希望将标记和逻辑分开,因此在这种情况下,您的代码看起来更像是:

Javascript

document.getElementById('loginButton').onclick = logUserIn

HTML

<input type="submit" id="loginButton" value="Log in">

此外,如果相关按钮是表单,您需要使用 e.preventDefault() 覆盖表单的默认功能。

关于javascript - 外部 JS 文件中的函数未被调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39353713/

相关文章:

node.js - cookie 和 cookieSession 的区别?

android - Gradle 错误 : Failed to resolve: com. google.firebase :firebase-core:16. 0.1

javascript - 如何在我的网站上添加 "Add to Favorites"按钮或链接?

javascript - 小书签实现

javascript - 帮助在多个窗口中使用 Firefox 扩展

javascript - 使用 nohup 在后台运行的 Http 服务器不会保持事件状态

javascript - 将 jQuery slider 的初始值设置为 0

javascript - 使用 Jade Html 预处理器分别在每个 div 内包含一个 img 标签的多个 Div

ios - Swift 3 如何在 firebase 中获取特定的用户 ID

swift - FIRE UserProfileChangeRequest 存储数据的地方