Laravel: Узловые модули недоступны - PullRequest
0 голосов
/ 19 марта 2019

В Laravel 5.7.10 я установил несколько узловых модулей, но я не могу понять, как сделать их доступными для моего клиентского JS.Чтобы использовать OpenLayers в качестве примера, я выполнил следующие шаги:

npm install ol --save
npm install
npm run dev

Мой package.json выглядит следующим образом:

{
  "private": true,
  "scripts": {
    "dev": "npm run development",
    "development": "cross-env NODE_ENV=development node_modules/webpack/bin/webpack.js --progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js",
    "watch": "npm run development -- --watch",
    "watch-poll": "npm run watch -- --watch-poll",
    "hot": "cross-env NODE_ENV=development node_modules/webpack-dev-server/bin/webpack-dev-server.js --inline --hot --config=node_modules/laravel-mix/setup/webpack.config.js",
    "prod": "npm run production",
    "production": "cross-env NODE_ENV=production node_modules/webpack/bin/webpack.js --no-progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js"
  },
  "devDependencies": {
    "axios": "^0.18",
    "bootstrap": "^4.0.0",
    "cross-env": "^5.1",
    "jquery": "^3.2",
    "laravel-mix": "^2.0",
    "lodash": "^4.17.5",
    "parcel-bundler": "^1.12.2",
    "vue": "^2.5.7",
    "ol": "^5.3.1",
    "ol-popup": "^4.0.0",
    "popper.js": "^1.14.7"
  },
  "dependencies": {
    "axios": "^0.18",
    "bootstrap": "^4.0.0",
    "cross-env": "^5.1",
    "jquery": "^3.2",
    "laravel-mix": "^2.0",
    "lodash": "^4.17.5",
    "parcel-bundler": "^1.12.2",
    "vue": "^2.5.7",
    "ol": "^5.3.1",
    "ol-popup": "^4.0.0",
    "popper.js": "^1.14.7"
  }
}

У меня есть это в resources / js /app.js:

/* OpenLayers dependencies */
const pbf = require('pbf');
const pixelworks = require('pixelworks');
const rbush = require('rbush');

require('ol');

В public / js / app.js я вижу, что туда загружен основной код OpenLayers.

У меня есть следующее в конце моего phpстраница:

<script src="{!! asset('js/app.js') !!}"></script>

В JS на стороне клиента, с которой я работаю, я использую следующую функцию для проверки наличия модуля:

function moduleAvailable(name) {
    try {
        require.resolve(name);
        return true;
    } catch(e){}
    return false;
}

function checkForModule(module_name) {
    if (moduleAvailable(module_name)) {
        console.log("Module '"+module_name+"' loaded via Mix!");
    } else {
        console.log("Module '"+module_name+"' not detected");
    }
}

Когда я запускаю вышеуказанную функциюиспользуя 'ol' в качестве имени модуля, я всегда получаю "Модуль 'ol' не обнаружен" - и то же самое происходит для всех других модулей, перечисленных как dev-зависимости в package.json.

Я не могупомогите, но подумайте, что я упускаю что-то действительно простое, но после пары дней попыток понять это, я просто не могу взломать это.Что еще я должен проверить?

...