包括令牌包到laravel与npm

问题描述:

我试图包括npm令牌包与laravel。包括令牌包到laravel与npm

首先,我加入以下行的package.json依赖关系:

"tokenfield": "^0.8.2", 

这导致在节点模型tokenfield文件夹。 然后,我添加以下行webpack.mix.js:

.copy('node_modules/tokenfield/dist/tokenfield.js', 'public/js') 
.copy('node_modules/tokenfield/dist/tokenfield.css', 'public/css') 

这导致我不得不tokenfield JavaScript和CSS在我的公用文件夹。现在我只是包括在我看来这样的人:

<link href="{{ asset('css/app.css') }}" rel="stylesheet"> 
<script src="{{ asset('js/tokenfield.js') }}"></script> 

但是,这个doesent工作。我得到以下错误:

module.exports = 

所以我在做什么在这里失踪:

Uncaught ReferenceError: module is not defined at tokenfield.js:1 

,当我看着它doesent看起来像一个普通的JavaScript文件的tokenfield.js,它开始?

大多数情况下您需要转储NPM包。这样做:

在你的主JS需求(如app.js)

window.Tokenfield = require("tokenfield"); 

window,以使其在全球acessible因为transpiled的依赖都在iife内执行使用,因此不属于默认情况下全局范围(这不是所有模块都需要)。

在你的主SCSS(例如app.scss)

@import "node_modules/tokenfield/lib/scss/tokenfield" 

那么就应该使用默认的混合样板工作。

+0

你是什么意思默认混合样板?我不太明白,我必须在哪里复制tokenfield dist以供参考工作?目前我得到以下错误:文件导入未找到或不可读:令牌字段。 – user1985273

+0

Laravel附带[this JS](https://github.com/laravel/laravel/blob/master/resources/assets/js/app.js)和[this scss](https://github.com/laravel /laravel/blob/master/resources/assets/sass/app.scss)文件默认使用[webpack.mix.js](https://github.com/laravel/laravel/blob/master/webpack.mix。 js)文件(这个想法与5.4之前版本的Laravel相同,但是使用gulp代替webpack.mix。这里的想法基本上是需要库的,这样webpack就会知道它包含在你的编译资源中。 – apokryfos

+0

所以我通过使用:@import“node_modules/tokenfield/lib/scss/tokenfield”获得了css的工作方式;但是javascript仍然存在问题,如果我只需要添加require(“tokenfield”)到我的app.js,那么我可以看到我编译的app.js添加了一些与tokenfield相关的函数,但是当我尝试使用tokenfield时,出现以下错误:“Uncaught ReferenceError:Tokenfield is not defined”。如果我只包含这个sc ript改为“https://github.com/KaneCohen/tokenfield/blob/master/dist/tokenfield.min.js”一切正常。任何想法什么可能是通过app.js inculding时的问题? – user1985273