Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在使用Phantomjs时关闭严格模式_Phantomjs - Fatal编程技术网

如何在使用Phantomjs时关闭严格模式

如何在使用Phantomjs时关闭严格模式,phantomjs,Phantomjs,当我们在项目中与Base2库一起使用Phantomjs时,会出现以下错误: + phantomjs ...../src/test/javascript/SpecRunner.html TypeError: setting a property that has only a getter 有人能指出如何解决这个问题吗?这似乎是由于Phantomjs(请参阅)中的Javascript“严格模式”导致的,但无法从Phantomjs文档中找到如何关闭此功能,特别是因为它发生在我们需要的外部库(Bas


当我们在项目中与Base2库一起使用Phantomjs时,会出现以下错误:

+ phantomjs ...../src/test/javascript/SpecRunner.html
TypeError: setting a property that has only a getter
有人能指出如何解决这个问题吗?这似乎是由于Phantomjs(请参阅)中的Javascript“严格模式”导致的,但无法从Phantomjs文档中找到如何关闭此功能,特别是因为它发生在我们需要的外部库(Base2.js)中

谢谢,

Paddy

Base2.js似乎没有定义“严格使用”。这意味着在一个javascript文件中,在任何函数之外都有一个“use strict”行。这将在定义严格模式时打开严格模式,您不能再次将其关闭。最好只在函数声明中打开它

要解决此问题,请在项目中包含的所有文件中搜索“use strict”或“use strict”。然后将其移除或移动到功能体内部


Hi@Emmentaler,你说得对,但我使用了很多外部库,比如angular*.js,它们在任何函数外都包含全局“use strict”行。这意味着,为了使用您提出的想法解决问题,我不仅必须在所有这些外部js库之前声明base2.js,还必须在所有这些在SpecRunner.html中使用base2的库之前声明扩展base2的类,这看起来很尴尬,但如果没有其他出路,您可以接受它。难道没有办法在我的文件扩展Base2的开头关闭“use strict”吗?唉,没有。这是一个已知的问题。问题在于,它是以这种方式实现的,以保持与早期版本javascript的向后兼容性。我讨厌它不能像C或C++中的一个定义那样工作。在上面的编辑中,我添加了一个类似的SO questionThank@Emmentaler的链接,这意味着我们不得不忍受预先声明所有“不严格”的JS文件的尴尬。因为它是SpecRunner.html,而不是实际的代码,所以我想至少就目前而言,这不是一个太大的问题。