在 npm 运行 dev 期间未找到 Npm 依赖项
Npm dependencies were not found during npm run dev
我的部分应用程序是使用 VueJS 构建的。完整的应用程序构建在 Laravel 框架之上,因此我使用 Laravel Mix 来编译我的 css/js-assets。为了获得更好的概览,我将部分应用程序放在单独的包中,例如:
- 应用程序
- bootstrap
- 配置
- ...
- 包
- 目录
- 资源
- js
- 组件
- CatalogComponentA.vue
- ...
- catalog.js
- ...
- 资源
- 资产
- js
- VueComponents
- ComponentA.vue
- ...
- app.js
运行 npm 在本地(在 Homestead/Vagrant 或在我的 OS 下)工作得很好。将其部署到我的网络服务器会导致出现错误,提示未找到依赖项:
*/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();
}
问题出在 file-endings。无法加载的组件具有大写文件扩展名(.Vue
而不是 .vue
)。因为我的服务器 OS 区分大小写,所以无法加载模块..
我的部分应用程序是使用 VueJS 构建的。完整的应用程序构建在 Laravel 框架之上,因此我使用 Laravel Mix 来编译我的 css/js-assets。为了获得更好的概览,我将部分应用程序放在单独的包中,例如:
- 应用程序
- bootstrap
- 配置
- ...
- 包
- 目录
- 资源
- js
- 组件
- CatalogComponentA.vue
- ...
- catalog.js
- ...
- 资源
- 资产
- js
- VueComponents
- ComponentA.vue
- ...
- app.js
运行 npm 在本地(在 Homestead/Vagrant 或在我的 OS 下)工作得很好。将其部署到我的网络服务器会导致出现错误,提示未找到依赖项:
*/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();
}
问题出在 file-endings。无法加载的组件具有大写文件扩展名(.Vue
而不是 .vue
)。因为我的服务器 OS 区分大小写,所以无法加载模块..