#javascript #windows #macos
Вопрос:
Я работаю над проектом на своем компьютере с Windows, а также на своем Macbook. У меня есть функция, которая регистрирует компоненты, определенные в определенных каталогах по всему миру, как это:
require('./bootstrap');
import { createApp, h } from 'vue';
import { createInertiaApp } from '@inertiajs/inertia-vue3';
import { InertiaProgress } from '@inertiajs/progress';
/**
* Third-party imports.
*/
import upperFirst from 'lodash/upperFirst';
import camelCase from 'lodash/camelCase';
const appName = window.document.getElementsByTagName('title')[0]?.innerText || 'Laravel';
/**
* Register components from the ./components and ./components/core
* directories. This way these components don't have to be imported
* manually every time.
*
* The core components are the core of other components and contains
* alerts, notifications, input fields etc.
*
* Base components are bigger components made upon the core components
* and contain a combination of one or more of the core components. These
* are usually components that contain a lot of code and have to be re-used
* across the whole application.
*
* @param {Vue instance} app
*/
function registerGlobalComponents (app) {
const requireComponent = require.context(
'./components' || './components/core' || './components/base',
true,
/.vue$/
);
for (const file of requireComponent.keys()) {
const componentConfig = requireComponent(file);
const name = file
.replace(/index.js/, '')
.replace(/^.//, '')
.replace(/.w $/, '');
const componentName = upperFirst(camelCase(name));
app.component(componentName,
componentConfig.default);
}
}
createInertiaApp({
title: (title) => `${title} - ${appName}`,
resolve: (name) => require(`./Pages/${name}.vue`),
setup({ el, app, props, plugin }) {
const inertiaApp = createApp({ render: () => h(app, props) });
inertiaApp.use(plugin);
inertiaApp.mixin({ methods: { route } })
registerGlobalComponents(inertiaApp);
inertiaApp.mount(el);
},
});
InertiaProgress.init({ color: '#4B5563' });
Когда я запускаю npm run watch
или dev
или prod
он компилирует код и успешно показывает мне веб-сайт на моей машине с Windows. Но когда я делаю это на своем Macbook, он выдает следующую ошибку:
Не удается разрешить». /компоненты» в «/Пользователи/базы данных/Сайты/обучение/ресурсы/js»
Есть ли причина, по которой это работает на машине с Windows, но не на машине, работающей на macOS?
Еще немного информации о моем проекте:
- Сделано с помощью Vue и Inertiajs
- Запуск этого кода из кода Visual Studio
Комментарии:
1. Ваш код не выглядит полным. Что
require
requireComponent
такое объекты и? Что вы подразумеваете под запуском в Windows/macOS? Вы работаете в узле, в браузере или как? Вы пропустили какие-то дополнительные теги?2. Одинакова ли структура папок в Windows и macOS?
3. @CascadiaJS структура папок моего проекта такая же. Однако пути проекта на машинах различны. macOS
/var/www/Sites/projectname
и WindowsD://laragon/www/projectname
.4. Не удается устранить ошибку, значит,
file not found
ошибка
Ответ №1:
Как объясняется в документах, вы начинаете с создания файла jsconfig.json в вашем корне с этими символами и символами в нем:
{
"compilerOptions": {
"baseUrl": "src"
},
"include": ["src"]
}
Вы можете найти примеры и ссылки здесь : — здесь
Комментарии:
1. Я попробую ответить на ваш вопрос, когда буду дома сегодня вечером, я дам вам знать, сработало ли это.
2. Да, пожалуйста, пожалуйста, сразу обратитесь к вышеуказанному блогу. 😀