首页 > 解决方案 > 在 npm run dev 期间未找到 npm 依赖项

问题描述

我的应用程序的一部分是使用 VueJS 构建的。完整的应用程序构建在 Laravel 框架之上,所以我使用 Laravel Mix 来编译我的 css/js-assets。为了获得更好的概述,我将我的应用程序的一部分放在单独的包中,例如:

在本地运行 npm(在 Homestead/Vagrant 或在我的操作系统下)工作得非常好。将其部署到我的网络服务器会导致错误提示找不到依赖项:

*/home/forge/my-domain.com/packages/catalog/resources/js/Components/AddressAutoComplete in ./packages/catalog/resources/js/catalog.js
*/home/forge/my-domain.com/packages/catalog/resources/js/Components/Vehicle in ./packages/catalog/resources/js/catalog.js
*/home/forge/my-domain.com/packages/catalog/resources/js/Components/VehicleList in ./packages/catalog/resources/js/catalog.js
...

我在所有系统上都有相同版本的 npm。我试图重新安装我的 npm 包并尝试过Vue.component('my-component', require('./path-to-my-component'))

catalog.js使用自己子目录中的组件:

require('./../../../../resources/assets/js/app_bootstrap');

window.Vue = require('vue');

require('./../../../../resources/assets/js/coreComponents');

// Components
Vue.component('address-autocomplete', require(__dirname + '/Components/AddressAutoComplete'));
Vue.component('vehicle-list', require(__dirname + '/Components/VehicleList'));
Vue.component('vehicle', require(__dirname + '/Components/Vehicle'));
...

我的 webpack.mix.js 配置如下:

let mix = require('laravel-mix');

let cssPath = 'public/css';
let jsPath = 'public/js';

if (mix.inProduction()) {
    mix.js('resources/assets/js/app.js', jsPath)
        .js('packages/catalog/resources/js/catalog.js', jsPath)
        .sass('packages/catalog/resources/sass/catalog.scss', cssPath)
        .sass('resources/assets/sass/app.scss', cssPath)
        .sourceMaps()
        .version();
} else {
    mix.js('resources/assets/js/app.js', jsPath)
        .js('packages/catalog/resources/js/catalog.js', jsPath)
        .sass('packages/catalog/resources/sass/catalog.scss', cssPath)
        .sass('resources/assets/sass/app.scss', cssPath)
        .sourceMaps();
}

标签: laravelnpmlaravel-mix

解决方案


问题是文件结尾。无法加载的组件具有大写的文件扩展名(.Vue而不是.vue)。因为我的服务器操作系统区分大小写,所以它无法加载模块..


推荐阅读