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
import
是 ECMAScript 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 使用该版本
我正在尝试 运行 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
import
是 ECMAScript 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 使用该版本