与nodejs一起使用时,Tableau javascript API始终会引发错误

时间:2019-05-17 14:29:47

标签: javascript node.js tableau

我正在使用#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)

1 个答案:

答案 0 :(得分:0)

Tableau Javascript API旨在在浏览器中运行,而不是在NodeJS应用程序中运行。您的NodeJS应用程序应加载使用Tableau Javascript API的HTML页面。