【问题标题】:Node NPM SyntaxError: Unexpected token import [duplicate]节点 NPM SyntaxError:意外的令牌导入 [重复]
【发布时间】:2018-01-13 08:02:00
【问题描述】:

我遇到了一个似乎在 Node / NPM 中非常流行的问题

我的搜索结果似乎都没有完全解决我的问题...

我正在使用 Restify 和 NodeJs...但是一个简单的 npm run start 会产生以下错误...

import logger   from 'src/modules/amLogger.js';
^^^^^^

SyntaxError: Unexpected token import
    at createScript (vm.js:74:10)
    at Object.runInThisContext (vm.js:116:10)
    at Module._compile (module.js:533:28)
    at Object.Module._extensions..js (module.js:580:10)
    at Module.load (module.js:503:32)
    at tryModuleLoad (module.js:466:12)
    at Function.Module._load (module.js:458:3)
    at Function.Module.runMain (module.js:605:10)
    at startup (bootstrap_node.js:158:16)
    at bootstrap_node.js:575:3
npm ERR! code ELIFECYCLE
npm ERR! errno 1

我的 packake.json 文件:

{
  "name": "example",
  "version": "0.0.1",
  "author": "Me@me.com",
  "engines": {
    "node": ">=8.2.1",
    "npm": ">=5.3.0"
  },
  "license": "MIT",
  "dependencies": {
    "ascii-art": "^1.4.2",
    "babel-cli": "^6.24.1",
    "babel-core": "^6.25.0",
    "babel-generator": "^6.25.0",
    "babel-plugin-lodash": "^3.2.11",
    "babel-plugin-syntax-async-functions": "^6.13.0",
    "babel-plugin-syntax-trailing-function-commas": "^6.20.0",
    "babel-plugin-transform-async-to-module-method": "^6.16.0",
    "babel-plugin-transform-class-properties": "^6.19.0",
    "babel-plugin-transform-es2015-modules-commonjs": "^6.18.0",
    "babel-plugin-transform-export-extensions": "^6.8.0",
    "babel-plugin-transform-flow-strip-types": "^6.21.0",
    "babel-plugin-transform-object-rest-spread": "^6.20.2",
    "babel-plugin-transform-runtime": "^6.15.0",
    "babel-polyfill": "^6.23.0",
    "babel-preset-es2015": "^6.24.0",
    "babel-register": "^6.18.0",
    "canvas": "^1.6.6",
    "chalk": "^2.0.1",
    "compression": "^1.7.0",
    "documentation": "^5.0.1",
    "dotenv": "^4.0.0",
    "lodash": "^4.17.4",
    "pretty-error": "^2.1.1",
    "restify": "^5.0.1",
    "restify-error": "^1.0.0",
    "restify-plugins": "^1.6.0",
    "socket.io": "^2.0.3",
    "util": "^0.10.3",
    "winston": "^2.3.1"
  },
  "devDependencies": {
    "ascii-art": "^1.4.2",
    "babel-cli": "^6.24.1",
    "babel-core": "^6.25.0",
    "babel-generator": "^6.25.0",
    "babel-plugin-lodash": "^3.2.11",
    "babel-plugin-syntax-async-functions": "^6.13.0",
    "babel-plugin-syntax-trailing-function-commas": "^6.20.0",
    "babel-plugin-transform-async-to-module-method": "^6.16.0",
    "babel-plugin-transform-class-properties": "^6.19.0",
    "babel-plugin-transform-es2015-modules-commonjs": "^6.18.0",
    "babel-plugin-transform-export-extensions": "^6.8.0",
    "babel-plugin-transform-flow-strip-types": "^6.21.0",
    "babel-plugin-transform-object-rest-spread": "^6.20.2",
    "babel-plugin-transform-runtime": "^6.15.0",
    "babel-polyfill": "^6.23.0",
    "babel-preset-es2015": "^6.24.0",
    "babel-register": "^6.18.0",
    "canvas": "^1.6.6",
    "chalk": "^2.0.1",
    "compression": "^1.7.0",
    "documentation": "^5.0.1",
    "dotenv": "^4.0.0",
    "es6-promise": "^4.1.1",
    "lodash": "^4.17.4",
    "pretty-error": "^2.1.1",
    "restify": "^5.0.1",
    "restify-error": "^1.0.0",
    "restify-plugins": "^1.6.0",
    "socket.io": "^2.0.3",
    "util": "^0.10.3",
    "winston": "^2.3.1"
  },
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1",
    "am:version": "/bin/sh scripts/display.sh",
    "am:pretty-error": "node --require pretty-error/start am.js",
    "am:start": "/bin/sh scripts/display.sh && node am.js",
    "start": "node am.js"
  },
  "description": "example",
  "main": "am.js"
}

这是我的 am.js 文件

'use strict';

require('dotenv').config();
import logger   from 'src/modules/amLogger.js';
import chalk    from 'chalk';
import util     from 'util';

/**
 * Module Dependencies
 */
const restify   = require('restify'),
    winston     = require('winston'),
    errs        = require('restify-errors'),
    art         = require('ascii-art'),
    compression = require('compression');

// create the Restify Server
const server = restify.createServer({
    name: 'example',
    version: 'v0.0.1',
...

错误发生在import logger from 'src/modules/amLogger.js'; 但是如果我注释掉这一行,错误只会移动到下一个导入语句——我也尝试在没有'use strict'; 的情况下运行它

我错过了什么?

【问题讨论】:

    标签: javascript node.js npm


    【解决方案1】:

    Node 还不支持 es6 导入这里你有一篇解释它的文章 https://medium.com/the-node-js-collection/an-update-on-es6-modules-in-node-js-42c958b890c

    【讨论】:

      猜你喜欢
      • 2015-12-16
      • 2019-01-11
      • 2019-08-07
      • 2018-09-24
      • 2018-11-10
      相关资源
      最近更新 更多