Node.js&;amcharts4-导入错误';意外的令牌导出';使用TypeSript或ES6

Node.js&;amcharts4-导入错误';意外的令牌导出';使用TypeSript或ES6,node.js,amcharts,Node.js,Amcharts,我刚刚通过npm将您的amCharts4版本下载到我的node.js应用程序中进行测试。Wenn已安装我在MyNodeJSAP/node_modules/@amcharts/amcharts4中找到文件chore.js和charts.js: MyNodejsApp _node_modules |_@amcharts |_amcharts4 |_charts.js |_core.js |_amcharts4-geodata _public |_css |_styles.

我刚刚通过npm将您的amCharts4版本下载到我的node.js应用程序中进行测试。Wenn已安装我在MyNodeJSAP/node_modules/@amcharts/amcharts4中找到文件chore.js和charts.js:

MyNodejsApp
_node_modules
 |_@amcharts
  |_amcharts4
   |_charts.js
   |_core.js
  |_amcharts4-geodata
_public
 |_css
  |_styles.css
 |_js
  |_main.js
_routes
  |_index.js
_views
 |_partials
  |_scripts.ejs
 |_dashboard.ejs
 |_index.ejs     
app.js  
在my routes/index.js中,我正在集成必要的文件:

const { am4core } = require("@amcharts/amcharts4/core");
const { am4charts } = require("@amcharts/amcharts4/charts");

/home/MyNodejsApp/node_modules/@amcharts/amcharts4/core.js:8
export { System, system } from "./.internal/core/System";
^^^^^^

SyntaxError: Unexpected token export
    at createScript (vm.js:80:10)
    at Object.runInThisContext (vm.js:139:10)
    at Module._compile (module.js:617:28)
    at Object.Module._extensions..js (module.js:664:10)
    at Module.load (module.js:566:32)
    at tryModuleLoad (module.js:506:12)
    at Function.Module._load (module.js:498:3)
    at Module.require (module.js:597:17)
    at require (internal/module.js:11:18)
    at Object.<anonymous> (/home/MyNodejsApp/routes/index.js:12:21)
[nodemon] app crashed - waiting for file changes before starting... 

我正在使用node.js v8.12.0

我不知道是否有办法让amCharts v4适用于node.js。它是为浏览器而设计的,不是node.js

:

目前无法直接在浏览器中加载npm包。您必须使用类似或的绑定器。(查看我们的文章)

网页包 (如果您感兴趣,我将在下面解释为什么需要捆绑机。)

如果您需要,您应该能够通过
npm install
让您的代码在浏览器中正常工作,或者之后通过
npm run prepare
重新构建。(在package.json中,您可能需要将
“webpack cli”
设置为最新版本,例如
“webpack cli”:“^3.1.2”

但是,这对node.js不起作用,因为
window
document
等浏览器中的全局变量在节点环境中不存在

对捆绑机的需求
  • 我们使用,但在某种程度上只有捆绑包商可以解释
  • 即使您尝试从那里使用
    导入
    ed,它最终也会出错,因为我们使用的是可以理解的。例如,指向不带扩展名的文件的路径(
    “/js/main”
    而不是
    ”/js/main.js“
    ),或者
    node\u模块中的包名(
    “@amcharts/amcharts4/core”
    而不是
    ”/node\u模块/@amcharts/amcharts/core.js“
    ),即没有一个是可以
    获取的有效URL
  • 说到绑定器,即使您使用了,它也会在遇到我们的少数绑定器时出错,因为它不支持动态导入
  • 。但这将不起作用,因为它还首先需要,
    .mjs
    (也称为Michael Jackon脚本)扩展!即使没有,或者如果您将所有amCharts
    .js
    文件重命名为
    .mjs
    ,您仍然需要使用有效的模块说明符。假设您重命名了所有内容,使其有效,包括其他npm包依赖项,并将文件重命名为.mjs,那么就无法使用npm下载和管理amcharts包的版本控制
  • 所以,是的,无论环境如何,都必须使用捆绑机

    不过,最后恐怕还是无法在node.js中使用它。比如说,一旦你有了一个捆绑包,把所有这些都放在一起,它在浏览器中工作得很好。。。要在node.js中运行,您仍然需要模拟浏览器。有一个叫做的库,它可以在很大程度上做到这一点。甚至有几个npm包在节点全局范围内提供jsdom,所以像
    window
    document
    这样的变量随时都可以在任何地方使用

    不幸的是,在与SVG合作时,您会遇到障碍。amCharts v4通过JavaScript与SVG协同工作,因此对SVG相关API的支持是绝对必要的。is的实现(或者更好,它仍然是一个WIP)


    我们真的需要了解更多您想要做的事情,如果node.js应用程序真的是这个意思,或者这毕竟是面向浏览器的。如果您需要amCharts在node.js中工作,那么此时它可能不适合您。让我们知道,我们将尽我们所能提供帮助。

    我不知道是否有办法让amCharts v4在node.js上运行。它是为浏览器而设计的,不是node.js

    :

    目前无法直接在浏览器中加载npm包。您必须使用类似或的绑定器。(查看我们的文章)

    网页包 (如果您感兴趣,我将在下面解释为什么需要捆绑机。)

    如果您需要,您应该能够通过
    npm install
    让您的代码在浏览器中正常工作,或者之后通过
    npm run prepare
    重新构建。(在package.json中,您可能需要将
    “webpack cli”
    设置为最新版本,例如
    “webpack cli”:“^3.1.2”

    但是,这对node.js不起作用,因为
    window
    document
    等浏览器中的全局变量在节点环境中不存在

    对捆绑机的需求
  • 我们使用,但在某种程度上只有捆绑包商可以解释
  • 即使您尝试从那里使用
    导入
    ed,它最终也会出错,因为我们使用的是可以理解的。例如,指向不带扩展名的文件的路径(
    “/js/main”
    而不是
    ”/js/main.js“
    ),或者
    node\u模块中的包名(
    “@amcharts/amcharts4/core”
    而不是
    ”/node\u模块/@amcharts/amcharts/core.js“
    ),即没有一个是可以
    获取的有效URL
  • 说到绑定器,即使您使用了,它也会在遇到我们的少数绑定器时出错,因为它不支持动态导入
  • 。但这将不起作用,因为它还首先需要,
    .mjs
    (也称为Michael Jackon脚本)扩展!即使没有,或者如果您将所有amCharts
    .js
    文件重命名为
    .mjs
    ,您仍然需要使用有效的模块说明符。假设您重命名了所有内容,使其有效,包括其他npm包依赖项,并将文件重命名为.mjs,那么就无法使用npm下载和管理amcharts包的版本控制
  • 所以,是的,无论环境如何,都必须使用捆绑机

    不过,最后恐怕还是无法在node.js中使用它。比如说,一旦你有了一个捆绑包,把所有这些都放在一起,它在浏览器中工作得很好。。。要在node.js中运行,您仍然需要模拟浏览器。有一个图书馆叫哪个ca
    import * as am4core from "@amcharts/amcharts4/core";
    import * as am4charts from "@amcharts/amcharts4/charts";
    
    /home/MyNodejsApp/routes/index.js:12
    import * as am4core from "@amcharts/amcharts4/core";
    ^^^^^^
    
    SyntaxError: Unexpected token import