如何在Node.js中导入puppeteer npm包及运行脚本MODULE_NOT_FOUND报错咨询
问题排查及解决方法
你遇到的MODULE_NOT_FOUND报错和puppeteer依赖安装无关,是Node.js无法找到你指定的运行文件nepalstock.js。
可能的原因
- 执行
node nepalstock.js的工作目录和nepalstock.js实际存储的目录不一致 - 文件名拼写不匹配,比如大小写错误、多了隐藏后缀(如
nepalstock.js.txt)、字符拼写错误 - 项目目录名
Web scraping project带有空格,shell解析路径时出现异常,导致文件定位失败
解决步骤
- 确认当前工作目录下存在目标文件:在终端执行
ls命令,查看输出列表中是否存在nepalstock.js,如果不存在就先通过cd命令进入nepalstock.js所在的目录后再执行运行命令。 - 修正文件名/运行命令的拼写,保证命令中指定的文件名和实际文件名完全一致。
- 规避目录空格的解析问题:运行命令时用引号包裹文件名,执行
node "nepalstock.js"即可。 - 提前修复代码中存在的其他bug,避免路径问题解决后出现新报错:
const puppeteer = require ('puppeteer'); async function grabStocks(url){ const browser = await puppeteer.launch(); // 原API是驼峰命名,newpage改为newPage const page = await browser.newPage(); await page.goto(url); const[el] = await page.$x('//*[@id="home-contents"]/table/tbody/tr[3]/td[2]') // td元素没有src属性,要获取文本内容改为取textContent const text = await el.getProperty('textContent'); // 原拼写错误,jasonValue改为jsonValue const textContent = await text.jsonValue(); console.log({textContent}); // 运行结束后关闭浏览器,避免进程残留 await browser.close(); } grabStocks ('http://www.nepalstock.com/todaysprice');
- 如需验证puppeteer安装状态,可在项目目录下执行
npm list puppeteer,输出对应版本号即为安装成功。
内容的提问来源于stack exchange,提问作者Rosan Paudel
相关产品推荐
相关产品推荐

