我试图使用我的laravel项目制作一个文本掩码GitHub存储库,有了这个,我想使用某个插件,它允许我将输入字段掩盖为价格。我正在谈论的GitHub存储库是linked here
插件名为createNumberMask
,在他们的github页面上,他们在文档中说明了以下内容:
import createNumberMask from 'text-mask-addons/dist/createNumberMask'
// First, you need to create the `numberMask` with your desired configurations
const numberMask = createNumberMask({
prefix: '',
suffix: ' $' // This will put the dollar sign at the end, with a space.
})
// ...then pass `numberMask` to the Text Mask component as the mask
现在,当我尝试将此实现到我自己的项目中时,它给出了错误,指出无法找到导入。造成这种情况的原因是什么?
我有一个刀片文件,底部有脚本标记。刀片文件看起来像这样,
@section('content')
<div class="row " style="color: white; width: 100%; margin: 0;" id="showEffect">
<div class="col-md-12 text-center" style="margin-top: 10rem">
<div class="row justify-content-md-center">
<div class="col-md-2">
<input type="text" class="myInput form-control depth-5">
</div>
</div>
</div>
</div>
<script type="module">
import createNumberMask from '/node_modules/text-mask-addons/dist/createNumberMask'
const numberMask = createNumberMask({
prefix: '€',
suffix: '',
allowDecimal: true,
});
var myInput = document.querySelector('myInput');
var maskedInputController = vanillaTextMask.maskInput({
inputElement: document.querySelector('myInput'),
mask: numberMask
});
</script>
@endsection
为什么导入不起作用? js文件位于node_modules文件夹中。
APP.JS
require('./bootstrap');
import TextMask from 'vanilla-text-mask/dist/vanillaTextMask';
import createNumberMask from 'text-mask-addons/dist/createNumberMask';
window.Vue = require('vue');
window.events = new Vue();
window.flash = function (message) {
window.events.$emit('flash', message);
};
Vue.component('flash', require('./components/Flash.vue'));
// Vue.component('product-view', require('./components/Products.vue'));
// Vue.component('wysiwyg', require('./components/Wysiwyg.vue'));
const app = new Vue({
el: '#app',
});
const numberMask = createNumberMask({
prefix: '€',
suffix: '',
allowDecimal: true,
});
var myInput = document.querySelector('myInput');
var maskedInputController = vanillaTextMask.maskInput({
inputElement: document.querySelector('myInput'),
mask: numberMask
});
答案 0 :(得分:2)
代码包含在刀片模板中,而不是通过resources/assets/js/app.js
或任何类型的javascript编译器(在这种情况下是&#39; webpack&#39;)
问题在于,虽然大多数浏览器都了解〜ES6
,但仍然存在导入/要求的限制。
由于node_modules
位于服务器端,因此前端无法访问它。
所以您可以/需要做的是以这种或那种方式将其添加到提到的javascript文件中,并使用npm run dev
或类似方法进行编译。
答案 1 :(得分:0)
确保您使用的是ES6 Transpiler,即Babel