如何将第三方 js 文件添加到特定刀片视图?
基本上我想在我的新项目的仪表板页面中添加 gridstack 功能。
我已经尝试从gridstack下载 js 和 css 文件,然后将 gridstack.js 放在项目resources/assets/js/
文件夹中,并将 css 文件放在项目resources/assets/css/
文件夹中
下一步是在混音器中加载文件。为此,我认为我可以去/resources/assets/js/app.js
添加图书馆
require("./bootstrap");
//Add the following two lines
require("./jquery-ui.min");
require("./gridstack");
然后我运行 npm run dev,它给出了以下错误
ERROR 编译失败,出现 20 个错误
未找到这些依赖项:
./resources/assets/js/gridstack.js 中的 jquery- ui/data ./resources/assets/js/gridstack.js 中的
jquery-ui/disable-selection
省略了 18 行类似的行要安装它们,您可以运行: npm install --save jquery-ui/data jquery-ui/disable-selection jquery-ui/focusable jquery-ui/form jquery-ui/ie jquery-ui/keycode jquery-ui/labels jquery-ui/jquery-1-7 jquery-ui/plugin jquery-ui/safe-blur jquery-ui/scroll-parent jquery-ui/tabbable jquery-ui/unique-id jquery-ui/版本 jquery-ui/widget jquery-ui/safe-active-element jquery-ui/widgets/mouse jquery-ui/widgets/draggable jquery-ui/widgets/droppable jquery-ui/widgets/resizable
当然,我尝试运行npm install --save jquery-ui/data
以查看它是否有效,但它没有:
npm 错误!权限被拒绝(公钥)。
致命:无法从远程存储库中读取。
请确保您具有正确的访问权限并且存储库存在。
如何在没有所有这些编译错误的情况下将简单的 js 和 css 添加到我的项目中......?
我还尝试了另一种方法:从上述方法中删除了需求,并找到了 webpack.mix.js 文件并使其看起来像这样:
mix.js('resources/assets/js/app.js', 'public/js')
.js('resources/assets/js/app-landing.js', 'public/js/app-landing.js')
.js('resources/assets/js/jquery-ui.min.js', 'public/js')
.js('resources/assets/js/gridstack.js', 'public/js')
....
然后我运行了npm run dev
唯一的从上面得到相同的错误。
这里有什么问题?我试图删除 jquery-ui 引用并再次运行 npm ......完全相同的错误
另外,我在我的项目中使用 npm 安装了 gridstack ......但我不知道如何直接使用它。我应该可以使用它,因为它是“已安装”的,但是如何使用呢?
我也做了一个npm cache clean
,没有效果我还验证了我的 node 和 npm 版本,它们看起来还可以:
node v6.10.3
npm v3.10.10
编辑 从需求中删除 ./ 并完全删除 jquery-ui (它已经加载)后,我设法从 npm 命令中不再出现错误。然而,gridstack 功能并不存在。我将我的源代码与 gridstack 的官方演示进行了比较,发现它们包含 2 个 gridstack js 文件:
<script src="../dist/gridstack.js"></script>
<script src="../dist/gridstack.jQueryUI.js"></script>
但是 Laravel mix 不同意我添加额外的要求。如果在 /resources/assets/js/app.js 中输入以下内容,我会再次从 npm 收到错误
require("./bootstrap");
require("gridstack");
require("gridstack.jQueryUI"); // nor does it work if I use gridstack.all.js or gridstack.jQueryUI.js
如何在我的 Laravel 5.4 项目中获得 gridstack 的全部功能?
编辑 似乎有效的是:
删除之前完成的所有更改,如 app.js 中的更改
我将 webpack.config.js 从 node_modules/laravel-mix 复制到我项目的根文件夹中
我添加了以下代码
module.exports.resolve = { extensions, alias: { 'vue$': 'vue/dist/vue.common.js', 'jquery-ui': path.resolve(__dirname, 'node_modules/jquery-ui/ui' ) } };
在 webpack.mix.js 中,我添加了以下内容:
mix.js('resources/assets/js/app.js', 'public/js') .copy('node_modules/gridstack/dist/gridstack.all.js','public/js');
在 package.json 我添加了:
"devDependencies": { ... "gridstack": "^0.3.0" }
在命令行中我做了
sudo npm 重建节点-sass
然后
sudo npm run dev
完成上述操作后,npm 正确编译了 mix, bun now,我在前端收到 jQuery 错误:
jQuery.Deferred 异常:c.draggable 不是函数 d.prototype.draggable@ http://myproject.com/js/gridstack.all.js:16:1395
这指向 gridstack.all.js 的第二部分(就在它的开头,在那里定义了 jquery ......再次)错误似乎表明 jquery 被多次加载。但这在经典的 PHP 应用程序中不是问题。
知道如何进行这项工作吗?默认的 laravel 应用程序默认需要 Bootstrap、lodash 和 jquery,当我将 gridstack 添加到项目中时,看起来好像在某个地方需要 jquery。我只是不明白。
任何人都可以尝试模拟我在做什么并告诉我他们是如何做到的吗?