【问题标题】:Rails v5.1.4 Yarn node_modules //= require not workingRails v5.1.4 Yarn node_modules //= 要求不工作
【发布时间】:2018-11-26 20:38:30
【问题描述】:

我只是试图在我通过 yarn 安装的一些 javascript 节点模块中使用 require。我的印象,它对其他一些人有用的是你在 application.js 中做 //= require [package_name]。

缩小后的 dist 文件与包名同名。

模块的树形结构为:

clipboard
  dist
    clipboard.js  
    clipboard.min.js
  composer.json
  contributing.md
  package.js
  package.json
  readme.md
  webpack.config.js

我没有使用 webpack。我收到此错误:

Sprockets::FileNotFound in PaperWallets#template

couldn't find file 'clipboard' with type 'application/javascript'
Checked in these paths: 
  /home/me/Desktop/Rails/paperwallet/app/assets/config
  /home/me/Desktop/Rails/paperwallet/app/assets/images
  /home/me/Desktop/Rails/paperwallet/app/assets/javascripts
  /home/me/Desktop/Rails/paperwallet/app/assets/stylesheets
  /home/me/.rvm/gems/ruby-2.4.1/gems/coffee-rails-4.2.2/lib/assets/javascripts
  /home/me/.rvm/gems/ruby-2.4.1/gems/jquery-rails-4.3.1/vendor/assets/javascripts
  /home/me/.rvm/gems/ruby-2.4.1/gems/actioncable-5.1.4/lib/assets/compiled
  /home/me/.rvm/gems/ruby-2.4.1/gems/actionview-5.1.4/lib/assets/compiled
  /home/me/.rvm/gems/ruby-2.4.1/gems/turbolinks-source-5.0.3/lib/assets/javascripts
  /home/me/Desktop/Rails/paperwallet/node_modules
  /home/me/.rvm/gems/ruby-2.4.1/gems/bootstrap-sass-3.3.7/assets/stylesheets
  /home/me/.rvm/gems/ruby-2.4.1/gems/bootstrap-sass-3.3.7/assets/javascripts
  /home/me/.rvm/gems/ruby-2.4.1/gems/bootstrap-sass-3.3.7/assets/fonts
  /home/me/.rvm/gems/ruby-2.4.1/gems/bootstrap-sass-3.3.7/assets/images

Extracted source (around line #17):
15: //= require jssha
16: //= require wallet-address-validator
17: //= require clipboard
18: //= require bootstrap-sprockets
19: //= require turbolinks
20: //= require_tree .

我做错了什么?它与 wallet-address-validator 具有相同的树结构,但我不能要求它?

【问题讨论】:

    标签: ruby-on-rails-5 require node-modules yarnpkg


    【解决方案1】:

    为了未来。

    阅读 Sprockets 自述文件 (https://github.com/rails/sprockets#sprockets-directives)

    在 application.js 文件中注释掉的内容讨论了它如何从逻辑路径加载路径。所以它直接从它要查找的路径之一中查找文件。在我的例子中是 node_modules 文件夹。

    但它不是直接在 node_modules 文件夹中,而是在 node_modules 内的剪贴板/dist 文件夹中。

    答案是 //= 需要剪贴板/dist/剪贴板

    我不确定为什么 //= require wallet-address-validator 有效,因为它在 node_modules 和 /dist/wallet-address-validator.min.js 中具有相同的 wallet-address-validator 文件夹

    如果有人知道我很想知道!

    【讨论】:

    • 因为某些包在其 package.json 中指定了一个“主”文件,当您需要时,该文件用作路径,例如require clipboard.
    【解决方案2】:

    您是否尝试过要求作为目录?

    *= require clipboard
    

    【讨论】:

    • 我是否需要去掉 // ?我的编辑表现得好像它不会喜欢它。在控制台中我得到: Uncaught SyntaxError: Unexpected token *=
    • 它应该只适用于 *= 。对我有用。你用的是什么编辑器?
    • Cloud9 sdk,所以我相信它是王牌编辑器。即使我像这样保存它,我也得到了控制台错误。 Uncaught SyntaxError: Unexpected token *= application.self-4179c4c2fec626c7fb21bfda92653da79c90070530e592f5c27fd79ec7025ef4.js?body=1:16
    • 哦,我找到了答案。 //= 需要剪贴板/dist/clipboard 确实可以加载它。
    猜你喜欢
    • 2019-06-22
    • 1970-01-01
    • 2012-04-24
    • 1970-01-01
    • 1970-01-01
    • 2016-06-19
    • 1970-01-01
    • 2020-11-07
    • 2018-04-22
    相关资源
    最近更新 更多