我是webpacker和yarn的新手。我成功安装了包:
纱线添加时刻
EDIT2:
这是我的导入
# app/javascript/packs/application.js
import moment from 'moment/moment'
import 'moment/locale/de-ch'
问题:我无法使用"时刻"在我的旧JS资产文件中打包
首先工作,另一个不工作:
# 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安装过程的关键点:
注意:我将我的应用程序从Rails 4.2升级到5.0以及之后升级到5.1;也许我的应用程序中缺少某些东西
答案 0 :(得分:2)
我有一个类似的问题,即在整个app / assets / javascript文件中使用了momentjs,它是通过gem包含的(实际上,更糟糕的是,rails-assets)。看起来我们都需要在全球范围内提供时刻对象,而不仅仅是在包内。所以,以下修正了我和我将保持它,直到我摆脱app / assets / javascript文件。
import moment from 'moment'
window.moment = moment
答案 1 :(得分:0)
首先我认为这是一个解决方案,但它不是: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'
=&GT;还是错误
后来我写了这篇文章: http://samuelmullen.com/articles/embracing-change-rails51-adopts-yarn-webpack-and-the-js-ecosystem/
资产管道发生了什么变化?长话短说:没什么。您 仍然可以像往常一样使用资产管道 - “如果你 就像你的资产管道一样,你可以保持你的资产管道“。那 包括javascripts /目录。您甚至可以混合打包文件 在您的视图中使用“pipelined”文件。 你不能包括你的 将打包的文件放入“流水线”文件中;好吧,不容易。
似乎我不能将“时刻”包与“旧”资产JS(?)
混合在一起