當我們在我們在和Base2庫相結合的項目中使用Phantomjs關閉嚴格模式,我們得到以下錯誤:如何使用Phantomjs
+ phantomjs ...../src/test/javascript/SpecRunner.html
TypeError: setting a property that has only a getter
任何人都可以指出如何解決這一問題問題?看起來它是由於Phantomjs內的Javascript「strict mode」引起的(請參考here),但從Phantomjs文檔找不到關於如何關閉它的問題,尤其是因爲它發生在我們需要的外部庫(Base2.js)中?
謝謝
水稻
嗨@Emmentaler,你是對的,但我用很多外部庫像角* .js文件,其中包含全球「使用嚴格」的任何功能外線。這意味着要使用你所提出的想法來解決問題,我不僅必須在所有這些外部JS庫之前聲明base2.js,還必須在所有這些在SpecRunner.html中使用Base2的庫之前擴展Base2的類,尷尬,儘管如果沒有其他出路,你可以忍受它。在我擴展Base2的文件的開始處沒有關閉「嚴格使用」的方法嗎? – Paddy
唉,沒有。這是一個已知的問題。問題在於它以這種方式實現,以保持與早期版本的JavaScript的向後兼容性。我討厭它不能像C或C++中的#define一樣工作。在上面的編輯中,我添加了一個類似SO問題的鏈接 –
感謝@Emmentaler,這意味着我們必須生活在聲明所有「非嚴格」的JS文件的尷尬之中。由於它是SpecRunner.html而不是實際的代碼,我想現在至少不是太多的問題。 – Paddy