node.js 中的意外保留字导入

unexpected reserved word import in node.js

我正在尝试 运行 node.js 后端服务器。我在 Node.js 文件中导入时收到错误 unexpected reserved word

文件 core.module.js 中的行是:

'use strict';
import lodashMixins from './lodashMixins.js'
... other imports and configurations ...

我启动简单命令:node core.module.js

这种错误并不少见,但通常发生在其他库中。我还没有看到 Node.js 的解决方案。我应该如何解决这个问题?我正在使用 Windows 服务器。

编辑: 我发现它是 ES6,但我该如何启动它?它看起来像应用程序的后端,但我不知道应该使用什么命令来无误地启动它。

import 关键字是 modules feature in ECMAScript 2015 以及 export 和其他一些规范的一部分。

它目前没有在 NodeJS 中本地实现,即使在最新版本 (v0.12.7) 中也是如此,ES2015 "friendlier" fork iojs 也不支持它。

您需要使用转译器才能使其正常工作。

[edit] 尽管存在 --harmony_modules 标志,但在最新版本 (v5.8) 中仍然不受支持,does nothing. Your best run is to use babel, as explained and here

importECMAScript 2015 (ES6) standard 的一部分,正如上面提到的 Amit 它目前没有在 Nodejs 中本地实现。

因此您可以使用 babel 之类的转换器来 运行 您的 es6 脚本

npm install babel

基于此的示例

app.js

 import {helloworld,printName} from './es6'
 helloworld();
 printName("John");

es6.js

 module.exports = {
    helloworld: function() { console.log('hello world!'); },
    printName: function(name) { console.log(name); }
}

并在start.js

中使用require hook
require("babel/register");
var app = require("./app.js");

并将您的应用程序启动为

node start.js

编辑 以上答案基于 babel v5.8.23。对于 babel >= v6

start.js中使用require hook作为

require('babel-core/register');
require("./app.js");

此外,默认情况下不启用转换。所以你需要安装一个preset。在这种情况下使用 es2015

npm install babel-preset-es2015

并在根文件夹中的 .babelrc 文件中使用它

{
   "presets": ["es2015"]
}

我 运行 遇到了这个问题,因为我在 Visual Studio 之外手动安装了这些工具中的任何一个。但是 Visual Studio 附带了现代 Web 开发工作流程中使用的多个开源命令行工具。这是告诉 Visual Studio 使用与您手动安装的版本相同的方法

转到工具 –> 选项 –> 项目和解决方案 –> 外部 Web 工具

  • 将全局PATH环境变量设置在内部路径之前,您可以直接使用右上角的箭头更改顺序。

  • 首先,找到您已有的 Node.js 安装并在命令行中使用。默认情况下,Node.js 0.12.7 安装到“C:\Program Files\nodejs”。将此条目添加到 node.js 目录的路径顶部以强制 Visual Studio 使用该版本