phantomjs和requirejs

use*_*927 7 requirejs phantomjs

main.js文件中的代码是这样的:

      phantom.injectJs("libs/require-1.0.7.js");
      require.config(
        {
          baseUrl: "" 
        }
      );
      require([], function(){});
Run Code Online (Sandbox Code Playgroud)

当我在命令行中运行"phantomjs main.js"时,requirejs在main.js中运行不正常.我知道如何在浏览器中运行的页面中使用requirejs(包括phantomjs的方式:page.open(url,callback)),但不像上面那样.我尝试使用像main.js这样的requirejs,我觉得这是一个很受欢迎的问题.谢谢!

Jas*_*onS 1

你误解了webpage.injectJs()

它用于将脚本注入到您正在加载的页面中,而不是注入到 phantomjs 运行时环境中。

因此,使用 .injectJs() 会使 requirejs 加载到您的页面中,而不是加载到 phantomjs.exe 中。

也就是说,phantomjs 的运行时环境与 commonjs 很相似。默认情况下,RequireJs 不会在那里运行。如果您感觉特别(非常)有动力,您可以尝试移植为 Nodejs 制作的 require-shim,但它不能开箱即用,并且需要对运行时有非常深入的了解。有关更多详细信息:http://requirejs.org/docs/node.html

一个更好的主意: 也许你应该确保你有你想要运行的 javascript 的 commonjs 版本。我个人用打字稿编写代码,这样我就可以为 commonjs 或 amd 构建。我使用commonjs作为phantomjs代码,使用amd作为nodejs和浏览器。