我正在使用#tableau-javascript-api编写JavaScript代码以从Tableau服务器获取数据。我知道这是前端。即使那样,我也在寻找一种使我的JavaScript代码自动执行的方法。为此,nodejs提供了自动化javascript的功能。
有几种自动执行浏览器的方法。例如幻影,苗条,木偶等。这些不是当前的问题。问题是,当我启动任何JavaScript代码(包括“ tableau-api”)时出现错误。 请帮我该怎么做。
情况1:
var tableau = require('tableau-api');
async function main() {
const browser = await puppeteer.launch({headless: false});
const page = await browser.newPage();
await page.setViewport({width: 1200, height: 720})
await page.goto('http://my_tableau_server/#/signin', { waitUntil: 'networkidle0' }); // wait until page load
await page.type('[name="username"]', CREDS.username);
slowMo: 500
await page.type('[name="password"]', CREDS.password);
// click and wait for navigation
await Promise.all([
page.click('[tb-test-id="button-signin"]'),
page.waitForNavigation({ waitUntil: 'networkidle0' }),
]);
}
错误看起来像: C:\ Development \ DDH \ JavaScript API \ javascriptAPINPM \ node_modules \ tableau-api \ index.js:1651 global.HTMLElement =元素; (^指向元素)
ReferenceError:未定义元素 在C:\ Development \ DDH \ JavaScript API \ javascriptAPINPM \ node_modules \ tableau-api \ index.js:1651:28 在C:\ Development \ DDH \ JavaScript API \ javascriptAPINPM \ node_modules \ tableau-api \ index.js:1662:5 在对象。 (C:\ Development \ DDH \ JavaScript API \ javascriptAPINPM \ node_modules \ tableau-api \ index.js:9975:3) 在Module._compile(内部/模块/cjs/loader.js:701:30) 在Object.Module._extensions..js(内部/模块/cjs/loader.js:712:10) 在Module.load(internal / modules / cjs / loader.js:600:32) 在tryModuleLoad(内部/模块/cjs/loader.js:539:12) 在Function.Module._load(内部/模块/cjs/loader.js:531:3) 在Module.require(internal / modules / cjs / loader.js:637:17) 在要求时(internal / modules / cjs / helpers.js:22:18)
情况2:
var tableau = require('C:\\Development\\DDH\\JavaScript API\\javascriptAPINPM\\tableau-2');
错误看起来像: C:\ Development \ DDH \ JavaScript API \ javascriptAPINPM \ tableau-2.js:1 (函数(导出,需求,模块,__ filename,__ dirname){window.tableau = window.tableau || {}; (^指向窗口) ReferenceError:窗口未定义 在对象。 (C:\ Development \ DDH \ JavaScript API \ javascriptAPINPM \ tableau-2.js:1:63) 在Module._compile(内部/模块/cjs/loader.js:701:30) 在Object.Module._extensions..js(内部/模块/cjs/loader.js:712:10) 在Module.load(internal / modules / cjs / loader.js:600:32) 在tryModuleLoad(内部/模块/cjs/loader.js:539:12) 在Function.Module._load(内部/模块/cjs/loader.js:531:3) 在Module.require(internal / modules / cjs / loader.js:637:17) 在要求时(内部/模块/cjs/helpers.js:22:18) 在对象。 (C:\ Development \ DDH \ JavaScript API \ javascriptAPINPM \ init_jsdom.js:1:77) 在Module._compile(internal / modules / cjs / loader.js:701:30)
答案 0 :(得分:0)
Tableau Javascript API旨在在浏览器中运行,而不是在NodeJS应用程序中运行。您的NodeJS应用程序应加载使用Tableau Javascript API的HTML页面。