Функция JavaScript работает только на компьютере с Windows

#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 и Windows D://laragon/www/projectname .

4. Не удается устранить ошибку, значит, file not found ошибка

Ответ №1:

Как объясняется в документах, вы начинаете с создания файла jsconfig.json в вашем корне с этими символами и символами в нем:

 {
  "compilerOptions": {
    "baseUrl": "src"
  },
  "include": ["src"]
} 

Вы можете найти примеры и ссылки здесь : — здесь

Комментарии:

1. Я попробую ответить на ваш вопрос, когда буду дома сегодня вечером, я дам вам знать, сработало ли это.

2. Да, пожалуйста, пожалуйста, сразу обратитесь к вышеуказанному блогу. 😀