问题描述
我正在尝试创建一个使用Puppeteer(用于Web抓取的NodeJS库)的简单网页。 我无法运行我的页面,因为我从index.html链接到的main.js文件使用通过require()的Puppeteer并在加载页面时给我一个错误,因为require()不能在客户端上使用,一侧。
我试图通过使用browserify将我的main.js文件与Puppeteer依赖项捆绑在一起来解决此问题,但是当使用来自browserify的新创建的bundle.js运行页面时,在浏览器控制台中出现以下错误:
Uncaught TypeError: promisify is not a function at Object.37.debug (bundle.js:2470) at o (bundle.js:1) at bundle.js:1 at Object.109.../common/Debug.js (bundle.js:14756) at o (bundle.js:1) at bundle.js:1 at Object.<anonymous> (bundle.js:15470) at Object.111.../common/browser.js (bundle.js:16004) at o (bundle.js:1) at bundle.js:1
我尝试安装promisify和util.promisify,但无法解决问题。
这些文件是超级基本的文件,用于测试其是否正常工作,看起来像这样:
index.html
<!DOCTYPE html> <html lang="en"> <head> <Meta charset="UTF-8"> <Meta name="viewport" content="width=device-width,initial-scale=1.0"> <link rel="stylesheet" href="./style.css"> <title>Document</title> </head> <body> <h1>My Page</h1> <script src="bundle.js"></script> </body> </html>
main.js
const puppeteer = require('puppeteer'); alert('Hello');
用于浏览器的命令
browserify main.js -o bundle.js
为什么不起作用?
解决方法
Browserify解决了浏览器不支持require
的问题。
它还允许您使用npm和yarn之类的工具来管理JS软件包,因为它可以像Node.js一样使用require
来解析它们。
它不能解决puppeteer
之类的模块问题,具体取决于Node.js(而非浏览器)提供的API。您无法在客户端运行Puppeteer。