javascript — Oracle Jet / requireJS мой не-AMD модуль не загружается и отображается как неопределенный, хотя я добавил его в shim

Oracle Jet / requireJS мой не-AMD модуль не загружается, показывая как неопределенный, хотя я добавил его в shim

Я использую Oracle JET для создания своего веб-приложения. Oracle JET использует RequireJS для обработки зависимостей.

Моя структура проекта следующая

 root |- node_modules |- myThirdPartyLibrary |- myThirdPartyLibrary.min.js |- src |- js |- scripts |- myLibrary.js |- main.js 

Я использую и стороннюю библиотеку, которая не является AMD, и мой собственный библиотечный файл функций JavaScript, который также не является AMD. Например, «myThirdPartyLibrary» и «myLibrary» просто имеют функции и переменные (примечание: нет «define»).

 const displayLogging = true; function function1() { ....} 

Эти библиотеки НЕ зависят ни от чего другого, они являются простым javascript (т.е. не зависят от JQuery и т. Д.)

В «path_mapping.json» у меня есть следующее, чтобы гарантировать, что «myThirdPartyLibrary» будет скопирован из «node_modules» в «web» при сборке.

 { "baseUrl": "js", "use": "local", "cdns": { "jet": { "prefix": "https://static.oracle.com/cdn/jet/v7.2.0/default/js", "config": "bundles-config.js" }, "3rdparty": "https://static.oracle.com/cdn/jet/v7.2.0/3rdparty" }, "libs": { "myThirdPartyLibrary": { "cdn": "3rdparty", "cwd": "node_modules/myThirdPartyLibrary", "debug": { "src": "myThirdPartyLibrary.min.js", "path": "libs/myThirdPartyLibrary/myThirdPartyLibrary.min.js", "cdnPath": "myThirdPartyLibrary/myThirdPartyLibrary.min.js" }, "release": { "src": "myThirdPartyLibrary.min.js", "path": "libs/myThirdPartyLibrary/myThirdPartyLibrary.min.js", "cdnPath": "myThirdPartyLibrary/myThirdPartyLibrary.min.js" } } 

В «main.js» я добавил прокладку для «myLibrary»

 requirejs.config( { baseUrl: 'js', paths: { 'myThirdPartyLibrary': 'libs/myThirdPartyLibrary/myThirdPartyLibrary.min', 'myLibrary': 'scripts/myLibrary' }, shim: { myLibrary: { exports: 'scripts/myLibrary' } } }); 

В «main.js» я «требую» и «myThirdPartyLibrary», и «myLibrary».

 require(['ojs/ojbootstrap', 'knockout', 'appController', myThirdPartyLibrary, myLibrary], function (Bootstrap, ko, app, myThirdPartyLibrary, myLibrary) { console.log("MY THIRD PARTY LIBRARY:") console.log(myThirdPartyLibrary) // loads correctly console.log("MY LIBRARY:") console.log(myLibrary) // ALWAYS showing as "undefined" .... 

«myThirdPartyLibrary» загружен правильно, но «myLibrary» отображается как «неопределенный».

Я проверил, что обе библиотеки помещаются в структуру папок «web» при сборке.

Я не понимаю, почему один загружается, а не другой. Обе библиотеки не от AMD и, следовательно, почему я попытался добавить прокладку для «myLibrary»

Взломать починить?

Я могу «исправить» это, добавив «myLibrary» в качестве импорта скриптов в «index.html». Но это не кажется мне правильным, так как «RequireJS» должен управлять всеми зависимостями.

 {amp}lt;script type="text/javascript" src="js/libs/require/require.js"{amp}gt;{amp}lt;/script{amp}gt; {amp}lt;script type="text/javascript" src="js/main.js"{amp}gt;{amp}lt;/script{amp}gt; {amp}lt;script type="text/javascript" src="js/scripts/myLibrary.js"{amp}gt;{amp}lt;/script{amp}gt; 
Понравилась статья? Поделиться с друзьями:
JavaScript & TypeScript
Adblock
detector