【问题标题】:How to fix "Sprockets::FileNotFound: couldn't find file 'turbolinks' with type 'application/javascript'"如何修复“Sprockets::FileNotFound: 找不到类型为 'application/javascript' 的文件 'turbolinks'”
【发布时间】:2019-06-20 07:57:38
【问题描述】:

我无法将我的代码推送到 heroku,但它可以在本地运行。 当我在终端中制作rake assets:precompile 时,我有这个答案: rake aborted! Sprockets::FileNotFound: couldn't find file 'turbolinks' with type 'application/javascript'我不想再使用 Sprockets

我试过这个:https://www.innoq.com/en/blog/rails-custom-elements-with-turbolinks-webpack/

但是当我制作时:

class ApplicationController < ActionController::Base
  include Turbolinks::Redirection
  # ...
end

我有这个来自错误控制台的错误uninitialized constant ApplicationController::Turbolinks

我的 app/javascript/packs/ 中的 application.js

import Turbolinks from 'turbolinks'
Turbolinks.start()

import '../css/application.scss'
import 'bootstrap'

我的 package.json

{
  "name": "**********",
  "private": true,
  "dependencies": {
    "@rails/webpacker": "3.5",
    "bootstrap": "^4.2.1",
    "jquery": "^3.3.1",
    "popper.js": "^1.14.6",
    "turbolinks": "^5.2.0"
  },
  "devDependencies": {
    "webpack-dev-server": "2.11.2"
  },
  "version": "1.0.0",
  "main": "index.js",
  "repository": "git@github.com:******/*************.git",
  "author": "******* <******@email.com>",
  "license": "MIT"
}

我的宝石文件

source 'https://rubygems.org'
git_source(:github) { |repo| "https://github.com/#{repo}.git" }

ruby '2.6.0'

# Bundle edge Rails instead: gem 'rails', github: 'rails/rails'
gem 'rails', '~> 5.2.2'
gem 'pg', '>= 0.18', '< 2.0'
gem 'puma', '~> 3.11'
gem 'webpacker'
gem 'jbuilder', '~> 2.5'
gem 'simple_form'
gem 'postmark-rails'
gem 'cloudinary'
gem 'dotenv-rails', groups: [:development, :test]
gem 'rails_admin'
gem 'turbolinks', require: false
gem 'bootsnap', '>= 1.1.0', require: false

group :development, :test do
  gem 'byebug', platforms: [:mri, :mingw, :x64_mingw]
end

group :development do
  gem 'web-console', '>= 3.3.0'
  gem 'listen', '>= 3.0.5', '< 3.2'
  gem 'spring'
  gem 'spring-watcher-listen', '~> 2.0.0'
  gem 'better_errors'
  gem 'binding_of_caller'
  gem 'letter_opener'
end

group :test do
  gem 'capybara', '>= 2.15'
  gem 'selenium-webdriver'
  gem 'chromedriver-helper'
end

我的 webpacker.yml 来自 app/config/webpack/

default: &default
  source_path: app/javascript
  source_entry_path: packs
  public_output_path: packs
  cache_path: tmp/cache/webpacker

  # Additional paths webpack should lookup modules
  # ['app/assets', 'engine/foo/app/assets']
  resolved_paths: []

  # Reload manifest.json on all requests so we reload latest compiled packs
  cache_manifest: false

  extensions:
    - .js
    - .sass
    - .scss
    - .css
    - .module.sass
    - .module.scss
    - .module.css
    - .png
    - .svg
    - .gif
    - .jpeg
    - .jpg

development:
  <<: *default
  compile: true

  # Reference: https://webpack.js.org/configuration/dev-server/
  dev_server:
    https: false
    host: localhost
    port: 3035
    public: localhost:3035
    hmr: false
    # Inline should be set to true if using HMR
    inline: true
    overlay: true
    compress: true
    disable_host_check: true
    use_local_ip: false
    quiet: false
    headers:
      'Access-Control-Allow-Origin': '*'
    watch_options:
      ignored: /node_modules/


test:
  <<: *default
  compile: true

  # Compile test packs to a separate directory
  public_output_path: packs-test

production:
  <<: *default

  # Production depends on precompilation of packs prior to booting for performance.
  compile: false

  # Cache manifest.json for performance
  cache_manifest: true

我的 app/views/layouts 中的 application.html.erb

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

【问题讨论】:

    标签: ruby-on-rails webpack turbolinks


    【解决方案1】:

    对我来说,问题在于 application.js。创建一个全新的 Ruby on Rails 应用程序后,我的 application.js 标头如下所示:

    之前

    //= require turbolinks
    //= require_tree .
    

    //=require turbolinks 似乎是导致问题的原因,因为我从未安装过 turbolinks 或任何类似的东西。删除此行为我解决了这个问题:

    之后

    //= require_tree .
    

    【讨论】:

    • 我刚刚创建了一个没有 --skip-sprockets 选项的新项目,现在它可以与 webpack 一起使用
    猜你喜欢
    • 2018-03-18
    • 1970-01-01
    • 1970-01-01
    • 2019-09-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-21
    相关资源
    最近更新 更多