我想使用 dayjs库( instead of moment) 在我的 Stimulus js Controller 中,但我不断收到错误消息:
dayjs is not defined
setNextVisit(event) {
console.log( dayjs().format('YYYY-MM-DD') );
}
我正在使用 Rails 5.2 以及 Webpacker 和 Stimulus。
我通过yarn add dayjs --save
添加了dayjs,并将其添加到/package.json
:
/package.json
{
"name": "meh",
"private": true,
"dependencies": {
"@rails/ujs": "^6.0.0-alpha",
"@rails/webpacker": "3.5",
"dayjs": "^1.8.2"
"stimulus": "^1.1.1",
"turbolinks": "^5.2.0"
},
"devDependencies": {
"webpack-dev-server": "2.11.2"
}
}
要通过 webpacker gem 连接 webpack 中的 dayjs,我已将其添加到 /app/javascript/packs/application.js
:
/app/javascript/packs/application.js
/* eslint no-console:0 */
// @RAILS/UJS
// imported in config/webpack/environment.js
Rails.start();
// TURBOLINKS
import Turbolinks from 'turbolinks';
Turbolinks.start();
// DAYJS
import dayjs from 'dayjs'
// STIMULUS
import { Application } from 'stimulus'
import { definitionsFromContext } from "stimulus/webpack-helpers"
const application = Application.start()
const context = require.context("./controllers", true, /\.js$/)
application.load(definitionsFromContext(context))
最佳答案
您需要在刺激 Controller 中导入 dayjs,而不是在主 application.js 中
你的 Controller 应该看起来像这样:
import { Controller } from "stimulus";
import dayjs from 'dayjs'
export default class extends Controller {
SetNextVisit(event) {
console.log( dayjs().format('YYYY-MM-DD') );
}
}
这不是 Stimulus 特有的,而是 ES6 JS 的工作原理
关于javascript - 如何向 webpacker 添加库以在 Stimulus JS Controller 中使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54509261/