У нас есть приложение Angular 6, которое мы пытаемся вызвать с помощью страницы visualforce (Salesforce).
Мы создали статический ресурс для папки 'dist' и включили файлы js в страницу vf.
все работает нормально, за исключением: мы используем переводы, которые хранятся в файле '/assets/i18n/en.json', файл angular's main.js автоматически запрашивает загрузку переводов en.json.
Thisработает нормально на localhost, но когда мы пытаемся сделать то же самое на странице vf, мы получаем ошибку:
SyntaxError: неожиданный токен <в JSON в позиции 2↵ в JSON.parse () ↵ в XMLHttpRequest.u (<a href="https://c.cs111.visual.force.com/resource/1549953043000/test_map/main.js" rel="nofollow noreferrer">https://c.cs111.visual.force.com/resource/1549953043000/test_map/main.js.
Мы попытались явно загрузить файл en.json, используя, но не работали, попытались переименовать папку активов.
<apex:page controller="AngularDemoController" sidebar="false">
<apex:variable value="{!IF($CurrentPage.Parameters.local == 'true','https://localhost:4200',URLFOR($Resource.test_map))}"
var="resourceURL"/>
<app-root id="app"></app-root>
<script>
var Visualforce = Visualforce;
var resourceURL = '{!resourceURL}';
function salesForceCallbackForSave(event) {
console.log('Js event callback', event);
const promise = new $.Deferred;
setTimeout(function () {
// promise.reject({message: 'This is salesforce message'})
promise.resolve()
});
return promise
}
const data = {
preSelectedAddress: "Westlock County, AB, CA,",
latitude: "58.859223547066584",
longitude: "-102.48046875",
userName: "Shivshankar Alkondwar",
isSandbox: true
};
let input = document.getElementById("app");
const dataString = JSON.stringify(data);
input.setAttribute('pluginSetting', dataString);
input.setAttribute('useAsSalesForcePlugin', 'true')
</script>
<apex:includeScript value="{!resourceURL + '/runtime.js'}"/>
<apex:includeScript value="{!resourceURL + '/polyfills.js'}"/>
<apex:includeScript value="{!resourceURL + '/styles.js'}"/>
<apex:includeScript value="{!resourceURL + '/scripts.js'}"/>
<link href='https://api.tiles.mapbox.com/mapbox.js/v2.2.1/mapbox.css' rel='stylesheet'/>
<link href="https://cartodb-libs.global.ssl.fastly.net/cartodb.js/v3/3.15/themes/css/cartodb.css" rel="stylesheet"/>
<script src="{!resourceURL + '/main.js'}" type="text/javascript"></script>
<apex:includeScript value="{!resourceURL + '/2.js'}"/>
<apex:includeScript value="{!resourceURL + '/3.js'}"/>
<apex:includeScript value="{!resourceURL + '/7.js'}"/>
<apex:includeScript value="{!resourceURL + '/8.js'}"/>
<apex:includeScript value="{!resourceURL + '/9.js'}"/>
<apex:includeScript value="{!resourceURL + '/10.js'}"/>
<apex:includeScript value="{!resourceURL + '/11.js'}"/>
<apex:includeScript value="{!resourceURL + '/common.js'}"/>
<!--<apex:includeScript value="{!resourceURL + '/assets/i18n/en.json'}" />-->
<link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet"
type="text/css"/>
<link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet" type="text/css"/>
</apex:page>