繁体   English   中英

Rails 5.1 Webpacker –通过yarn添加了moment.js –如何在旧资产JS中使用包

[英]Rails 5.1 Webpacker – added moment.js via yarn – how to use package in old asset JS

我是webpacker和yarn的新手。 我使用以下命令成功安装了该软件包:

加纱力矩

EDIT2:

这是我的进口

# app/javascript/packs/application.js
import moment from 'moment/moment'
import 'moment/locale/de-ch'

问题:我不能在旧的JS资产文件中使用“ moment”包

首先起作用,其他不起作用:

# in: app/javascript/packs/application.js
console.log('Log: ' + moment([2007, 0, 29]).toNow()) #=> Log: in 10 Jahren

# in app/*assets*/javascripts/application.js
console.log('Log2: ' + moment([2007, 0, 29]).toNow()) #=> Uncaught ReferenceError: moment is not defined

EDIT1:

这里是webpacker安装过程的关键点:

  1. 在gemfile: gem'webpacker',github:'rails / webpacker'中
  2. 将此行添加到assets.rb: Rails.application.config.assets.paths << Rails.root.join('node_modules')
  3. 在application.html.haml的%head中添加: = javascript_pack_tag'application'
  4. 重新启动Rails服务器并启动webpacker

注意:我将我的应用程序从Rails 4.2升级到5.0,然后又升级到5.1。 也许我的应用程序中缺少某些东西

我有一个类似的问题,momentjs在整个app / assets / javascript文件中都使用过,并且通过gem包含在内(实际上,更糟糕的是,rails-assets)。 看起来我们俩都需要时刻对象在全球范围内可用,而不仅仅是在包内可用。 因此,以下内容为我解决了该问题,直到我摆脱了app / assets / javascript文件后,我都会继续解决。

import moment from 'moment'

window.moment = moment

首先,我认为这是一个解决方案,但不是: https : //github.com/rails/webpacker#resolved-paths

在“ /config/webpacker.yml”中,我添加了以下内容:

# /config/webpacker.yml    
resolved_paths: ['app/assets']

在这里,我导入了使用“ moment.js”的文件:

# /app/javascript/packs/application.js
import 'javascripts/<folder>/<some_file_uses_moment>.coffee'

=>还是错误

后来我找到了这篇文章: http : //samuelmullen.com/articles/embracing-change-rails51-adopts-yarn-webpack-and-the-js-ecosystem/

资产管道发生了什么? 长话短说:什么都没有。 您仍然可以像往常一样使用资产管道-“如果您喜欢资产管道,则可以保留资产管道”。 其中包括javascripts /目录。 您甚至可以在视图中混合打包文件和“流水线”文件。 您只是不能将打包文件包含在“流水线”文件中; 好吧,不容易。

看来我无法将“时刻”包与“旧”资产JS(?)混合使用

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM