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

时间:2015-09-02 07:21:04

标签: javascript node.js ecmascript-6 importerror

我试图运行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 Server。

修改:我发现它是ES6,但我怎么能启动呢?它看起来像应用程序的后端,但我不知道应该使用什么命令来启动它而没有错误。

3 个答案:

答案 0 :(得分:50)

importECMAScript 2015 (ES6) standard的一部分,如上所述,Amit目前尚未在Nodejs中本机实现。

因此,您可以使用babel等转录程序来运行es6脚本

npm install babel

基于此answer

的示例

<强> 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"]
}

答案 1 :(得分:33)

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

目前还没有在NodeJS中本地实现,即使在最新版本(v0.12.7)上也没有,在ES2015&#34;友好的&#34;中也不支持它。 fork iojs。

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

尽管存在--harmony_modules标志does nothing,但最新版本(v5.8)仍然不支持

[edit]。最佳运行方式是使用babel,如herehere

所述

答案 2 :(得分:1)

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

转到工具 - &gt;选项 - &gt;项目和解决方案 - &gt;外部Web工具

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

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