Как исправить ошибку «Неопределенный не является объектом» в Javascript

#javascript #adobe-illustrator

#javascript #adobe-illustrator

Вопрос:

Я пытаюсь использовать скрипты в illustrator. Некоторые из них требуют возможности импортировать другие скрипты, поэтому я нашел приведенный ниже код. Когда я пытаюсь запустить его, я получаю

Ошибка 21: неопределенный не является объектом.
Строка 6 -> var Libraries = (function(libpath){«

Я просмотрел другие ответы, и, похоже, проблема в том, что «Библиотеки» (?) не определено, и я должен сначала определить его. К сожалению, я не знаю, как это должно быть определено. Или я не понимаю проблему в целом.

Я ожидал, что он импортирует helloworld.jsx и, следовательно, сможет запускать функцию HelloWorld. Он вызвал ошибку, описанную выше.

 //Library importing function from https://gist.github.com/jasonrhodes/5286526

// indexOf polyfill from https://gist.github.com/atk/1034425
[].indexOf||(Array.prototype.indexOf=function(a,b,c){for(c=this.length,b=(c ~~b)%c;b<camp;amp;(!(b in this)||this[b]!==a);b  );return b^c?b:-1;});

var Libraries = (function(libPath) {
  return {
    include: function(path) {
      if (!path.match(/.jsx$/i)) {
        path = path   ".jsx";
      }
      return $.evalFile(libPath   path);
    }
  };
})($.fileName.split("/").splice(0,$.fileName.split("/").indexOf("adobe_scripts")   1).join("/")   "/lib/");

Libraries.include("HelloWorld.jsx");
helloWorld();
  

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

1. Я подозреваю, что $.evalFile() это асинхронно? Это Adobes ExtendScript вместо javascript?

Ответ №1:

Прошло много лун с тех пор, как я это сделал… Разве библиотеки не являются функцией, которая принимает libPath, поэтому вам нужно будет вызвать

 Libraries('c:whereever').include('HellowWorld.jsx');