简易自动完成无法识别

Posted

技术标签:

【中文标题】简易自动完成无法识别【英文标题】:Easy Auto-complet is not recognized 【发布时间】:2021-07-13 22:24:38 【问题描述】:

当我的用户在我的网络应用程序上键入播放器的伪代码时,我会使用简易自动完成来添加建议。

但它不起作用。

这是我收到的消息:

people.js:7 Uncaught TypeError: $input.easyAutocomplete is not a function
    at htmlDocument.<anonymous> (people.js:7)
    at Object../node_modules/turbolinks/dist/turbolinks.js.e.dispatch (turbolinks.js:75)
    at r.notifyApplicationAfterPageLoad (turbolinks.js:994)
    at r.pageLoaded (turbolinks.js:948)
    at turbolinks.js:872

这是我的代码:

在 app/javascript/packs/people.js 中

document.addEventListener("turbolinks:load", function() 
  $input = $("[data-behavior='autocomplete']")
  var options = 
    getValue: "pseudo"
  
  $input.easyAutocomplete(options)
);

console.log("custom js file loaded")

这是我的布局:

app/views/layouts/application.html.erb

<%= stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track': 'reload' %>
<script src="//code.jquery.com/jquery-1.11.2.min.js"></script>
<%= javascript_pack_tag 'application', 'data-turbolinks-track': 'reload', defer: true %>
<%= javascript_pack_tag 'people', 'data-turbolinks-track': 'reload' %>

当然在我的布局中,这部分之前和之后都有 OG facebook 和 twitter 应答器的脚本

这是我的 environment.js:

const  environment  = require('@rails/webpacker')

const webpack = require('webpack')
environment.plugins.prepend('Provide',
  new webpack.ProvidePlugin(
    $: 'jquery/src/jquery',
    jQuery: 'jquery/src/jquery'
  )
)

module.exports = environment

我也试过了,但效果不佳:

const  environment  = require('@rails/webpacker')

const webpack = require('webpack');
// Preventing Babel from transpiling NodeModules packages
environment.loaders.delete('nodeModules');
// Bootstrap 4 has a dependency over jQuery & Popper.js:
environment.plugins.prepend('Provide',
  new webpack.ProvidePlugin(
    $: 'jquery',
    jQuery: 'jquery',
    Popper: ['popper.js', 'default']
  )
);
module.exports = environment

如果您需要更多信息,我准备回答。

提前致谢

【问题讨论】:

您正在从 CDN 加载 jquery,但您似乎提供的是本地路径 $: 'jquery/src/jquery' 是的,这意味着,我应该更改我的 environment.js 文件?或者我可以使用另一种方式来加载我的 Jquery ?另外,当我在控制台中输入$().jquery 时,它会打印出Jquery 的版本,不知道它是否有助于您看得更清楚? 老实说,我对 webpack 一无所知,但你配置它的方式似乎是错误的。 好的,我尝试了其他方法,但还是不行(你可以看到编辑) 【参考方案1】:

您以错误的方式包含 javascript 文件。 正如辅助方法文档所说:

  # DO:
  #
  #   <%= javascript_pack_tag 'calendar', 'map' %>
  #
  # DON'T:
  #
  #   <%= javascript_pack_tag 'calendar' %>
  #   <%= javascript_pack_tag 'map' %>

https://github.com/rails/webpacker/blob/f1b06c7fd5bc4b7fc7128742d1078466b94af71f/lib/webpacker/helper.rb#L89-L97

在你的情况下:

<%= javascript_pack_tag 'application', 'people', 'data-turbolinks-track': 'reload', defer: true %>

【讨论】:

您好,我尝试过这种方式,但浏览器的控制台中弹出相同的错误 您在哪里需要 easyAutocomplete? 您好,我终于用 Alogilia 和刺激解决了这个问题。谢谢

以上是关于简易自动完成无法识别的主要内容,如果未能解决你的问题,请参考以下文章

使用 CMake 构建时如何使 QtCreator 识别 OpenGL 函数的自动完成功能?

如何将自动完成条目添加到 Xcode

UIViewPropertyAnimator 自动布局完成问题

DataGrip 无法识别 PostgreSQL 数据类型

如何强制让用户输入所有字符以进行识别(目前被自动完成击败)

VSCode 使用自定义 webpack 解析自动完成 javascript 导入的对象