Javascript &引用;意外令牌导入“;在诺德和巴贝尔?

Javascript &引用;意外令牌导入“;在诺德和巴贝尔?,javascript,node.js,ecmascript-6,babeljs,package.json,Javascript,Node.js,Ecmascript 6,Babeljs,Package.json,在js文件中,我使用import to而不是require import co from 'co'; 并且尝试直接由nodejs运行它,因为它说import是“shipping features”,并且支持没有任何运行时标志(),但是我得到了一个错误 import co from 'co'; ^^^^^^ SyntaxError: Unexpected token import 然后我试着用巴贝尔 npm install -g babel-core npm install -g babel

在js文件中,我使用import to而不是require

import co from 'co';
并且尝试直接由nodejs运行它,因为它说import是“shipping features”,并且支持没有任何运行时标志(),但是我得到了一个错误

import co from 'co';
^^^^^^

SyntaxError: Unexpected token import
然后我试着用巴贝尔

npm install -g babel-core
npm install -g babel-cli
npm install babel-core //install to babel locally, is it necessary?
和运行

babel-node js.js
仍然有相同的错误,意外的令牌导入


我怎样才能摆脱它呢?

来自巴别塔6发行说明:

由于Babel专注于成为JavaScript工具的平台,而不是ES2015 transpiler,我们决定让所有插件都加入。这意味着当您安装Babel时,默认情况下它将不再传输您的ES2015代码

在我的设置中,我安装了es2015预设

npm install --save-dev babel-preset-es2015
还是用纱线

yarn add babel-preset-es2015 --dev
并在my.babelrc中启用了预设

{
  "presets": ["es2015"]
}

可能是您正在运行未编译的文件。让我们从头开始吧

在工作目录中创建:

  • 两个文件夹。一个用于预编译的es2015代码。另一个是巴贝尔的 输出。我们将分别将它们命名为“src”和“lib”
  • 包含以下对象的package.json文件:

    { 
      "scripts": {
          "transpile-es2015": "babel src -d lib"
      },
      "devDependencies": {
          "babel-cli": "^6.18.0",
          "babel-preset-latest": "^6.16.0"
      }
    }
    
  • 一个名为“.babelrc”的文件,其中包含以下说明:
    {“预设”:[“最新”]}

  • 最后,在src/index.js文件中编写测试代码。就你而言:
    从“co”导入co.

通过您的控制台:

  • 安装您的软件包:
    npm安装
  • 使用-d(aka--out dir)标志将源目录传输到输出目录,该标志已在我们的package.json中指定:
    npm运行Transfile-es2015
  • 从输出目录运行代码!
    node lib/index.js

在实现模块之前,您可以使用Babel“transpiler”运行代码:

npm install --save babel-cli babel-preset-node6
然后

./node_modules/babel-cli/bin/babel-node.js --presets node6 ./your_script.js
如果您不想键入
--presets node6
,您可以通过以下方式保存它。babelrc文件:

{
  "presets": [
    "node6"
  ]
}
看到和

  • 安装软件包:
    babel-core
    babel-polyfill
    babel-preset-es2015
  • 创建
    .babelrc
    ,内容为:
    {“预设”:[“es2015”]}
  • 不要将
    import
    语句放在主条目文件中,使用另一个文件,例如:
    app.js
    ,您的主条目文件应该需要
    babel core/register
    babel polyfill
    ,以使babel首先独立工作。然后您可以要求
    app.js
    where
    import
    语句
  • 例如:

    index.js

    require('babel-core/register');
    require('babel-polyfill');
    require('./app');
    
    import co from 'co';
    
        {
      "name": "node",
      "version": "1.0.0",
      "description": "",
      "main": "server.js",
      "dependencies": {
        "body-parser": "^1.18.2",
        "express": "^4.16.2",
        "lodash": "^4.17.4",
        "mongoose": "^5.0.1"
      },
      "devDependencies": {
        "babel-cli": "^6.26.0",
        "babel-preset-es2015": "^6.24.1",
        "babel-preset-stage-0": "^6.24.1"
      },
      "scripts": {
        "test": "echo \"Error: no test specified\" && exit 1",
        "start": "babel-node server.js"
      },
      "keywords": [],
      "author": "",
      "license": "ISC"
    }
    
    app.js

    require('babel-core/register');
    require('babel-polyfill');
    require('./app');
    
    import co from 'co';
    
        {
      "name": "node",
      "version": "1.0.0",
      "description": "",
      "main": "server.js",
      "dependencies": {
        "body-parser": "^1.18.2",
        "express": "^4.16.2",
        "lodash": "^4.17.4",
        "mongoose": "^5.0.1"
      },
      "devDependencies": {
        "babel-cli": "^6.26.0",
        "babel-preset-es2015": "^6.24.1",
        "babel-preset-stage-0": "^6.24.1"
      },
      "scripts": {
        "test": "echo \"Error: no test specified\" && exit 1",
        "start": "babel-node server.js"
      },
      "keywords": [],
      "author": "",
      "license": "ISC"
    }
    

    它应该与应用程序中的
    node index.js
    一起使用,您必须声明
    require()
    模块,而不是使用“导入”关键字:

    const app = require("example_dependency");
    
    然后,创建一个.babelrc文件:

    {
    "presets": [ 
        ["es2015", { "modules": false }]
    ]
    }
    
    然后,在gulpfile中,确保声明
    require()
    模块:

    var gulp = require("gulp");
    

    如果将预设用于react native,它将接受导入

    npm i babel-preset-react-native --save-dev
    
    并将其放入.babelrc文件中

    {
      "presets": ["react-native"]
    }
    
    在项目根目录中


    巴贝尔-preset-es2015
    现在已被弃用,如果您尝试使用劳伦斯的解决方案,您将收到警告

    要使用Babel 6.24.1+,请改用
    Babel预设环境

    npm install babel-preset-env --save-dev
    
    然后将
    env
    添加到
    .babelrc
    中的预设中:

    {
      "presets": ["env"]
    }
    

    有关更多信息,请参阅。

    当前的方法是使用:

    npm安装--保存dev babel cli babel preset env

    然后在
    .babelrc

    {
        "presets": ["env"]
    }
    
    此安装支持最新版本的js(es2015及以后版本) 看看babeljs

    不要忘记在
    package.json中添加
    babel节点
    ,在运行js文件时使用,如下所示

    "scripts": {
       "test": "mocha",
        //Add this line to your scripts
       "populate": "node_modules/babel-cli/bin/babel-node.js" 
    },
    
    现在您可以
    npm在终端内部填充文件.js

    如果您正在运行windows,并且运行错误“无法识别内部或外部命令”,请使用脚本前面的节点,如下所示

    node node\u模块/babel cli/bin/babel node.js


    然后
    npm run populate

    我已经做了以下工作来克服这个问题(ex.js脚本)

    问题 解决方案
    • 安装-->“npm i--保存开发版本babel cli babel-preset-es2015 巴别塔-预设-舞台-0“
    package.json文件加载项脚本中的下一个“start”:“babel node server.js”

    并在根目录中为babel创建文件 “.LRC”


    并在终端运行npm start

    包括以下步骤来解决问题:

    1) 安装CLI和环境预设

    $ npm install --save-dev babel-cli babel-preset-env
    
    2) 创建一个.babelrc文件

    {
      "presets": ["env"]
    }
    
    3) 在package.json中配置npm start

    "scripts": {
        "start": "babel-node ./server/app.js",
        "test": "echo \"Error: no test specified\" && exit 1"
      }
    
    4) 然后启动应用程序

    $ npm start
    

    @jovi您只需添加.babelrc文件,如下所示:

    {
      "plugins": [
        "transform-strict-mode",
        "transform-es2015-modules-commonjs",
        "transform-es2015-spread",
        "transform-es2015-destructuring",
        "transform-es2015-parameters"
      ]
    }
    
    并将这些插件作为npm的DevDependence安装


    然后再次尝试babel节点***.js。希望这能对您有所帮助。

    您必须使用babel预设环境nodemon进行热重新加载

    然后创建包含以下内容的.babelrc文件:

    {
      "presets": ["env"]
    }
    
    最后,在package.json中创建脚本:

    "scripts": {
        "babel-node": "babel-node --presets=env",
        "start": "nodemon --exec npm run babel-node -- ./index.js",
        "build": "babel src -d dist"
      }
    
    或者使用这个样板:


    回答得好。不幸的是,您仍然需要使用require(),无法对npm包使用导入。我将
    babel节点
    es2015
    react
    预设一起使用。同样的错误,不起作用。是的,这是需要的,但它不能使导入工作。对我来说,这是一个简单的修复。我被困在tunnel vision中,试图将代码从一个react/babel项目改编成另一个es5项目,同时升级到es6语法。在脚本下的package.json中,我忘了将“node run”替换为“babel node run.js”。是的,我觉得很害羞。:)JS生态系统就是这样easy@FelixKling当前位置虽然链接问题的答案肯定也回答了这个问题,但很难将这个问题视为与那个问题的重复。在任何情况下,我很高兴在这里看到这一个,因为谷歌直接把我带到这里,因为所描述的语法错误与我所说的完全匹配