如何在启用ES6功能的情况下运行Node.js应用程序
How to run Node.js app with ES6 features enabled?
我使用BabelJS的require钩子(以前名为6to5)来运行具有es6功能的节点应用程序:
// run.js
require("babel/register");
require("./app.js6");
我调用node run.js
来运行我的app.js6。我需要安装BabelJS,并为我想使用es6features的每个项目提供run.js。我更喜欢nodejs6 app.js6
这样的电话。我如何独立实现这个系统(Unix和Windows)?
将babel-cli
和babel-preset-es2015
(又名ES6)依赖项添加到应用程序的package.json文件中,并定义start
脚本:
{
"dependencies": {
"babel-cli": "^6.0.0",
"babel-preset-es2015": "^6.0.0"
},
"scripts": {
"start": "babel-node --presets es2015 app.js"
}
}
然后你可以简单地执行以下命令来运行你的应用程序:
npm start
如果你决定停止使用Babel(例如,一旦Node.js支持所有ES6功能),你可以将其从package.json:中删除
{
"dependencies": {},
"scripts": {
"start": "node app.js"
}
}
这样做的一个好处是,运行应用程序的命令保持不变,如果你与其他开发人员合作,这会有所帮助。
如何配置带有es6支持的node.js应用程序,并在文件更改时重新加载服务器。
I.配置步骤(从头开始创建项目):
1.进入终端到您的项目主目录
npm init
//为项目创建package.json
2.安装依赖项
npm install --save-dev babel
npm install --save-dev babel-cli
npm install --save-dev babel-preset-es2015
npm install --save-dev babel-preset-stage-0 //*1
npm install --save-dev nodemon
1-也可以是第1阶段或第2阶段,这取决于es的哪些功能我们想使用
3.我们应该在package.json文件中有这样的东西(当然,包版本会有所不同,但没关系):
"devDependencies": {
"babel": "^6.5.2",
"babel-cli": "^6.16.0",
"babel-preset-es2015": "^6.16.0",
"babel-preset-stage-0": "^6.16.0",
"nodemon": "^1.11.0"
}
4.在根项目目录下创建.babelrc文件(有package.json文件)
{
"presets": ["es2015", "stage-0"]
}
5.创建两个目录:
src-这是在es6 中写入文件的工作目录
dist-这里的文件将使用babel 编译到es5
您的项目根目录应该如下所示:
- 项目
- src
- index.js//主项目文件
- dist
- package.json
- .babelrc
- src
7.添加到package.json所需的命令:
"scripts": {
"watch": "babel -w src/ -d dist/",
"build": "babel src/ -d dist/",
"serve": "babel -w src/ -d dist/ | nodemon --watch dist",
"test": "echo '"Error: no test specified'" && exit 1"
}
8.可用命令:
npm run watch
//开始监视src目录中的更改并编译到dist
npm run build
//将src目录中的文件编译到dist
npm run serve
//它正在进行监视+启动节点服务器,每次文件更改时,它都会使用正在监视dist目录更改的nodemon重新启动节点服务器
9.最终票据
- 服务器将运行dist/index.js文件作为主文件
- 文件dist/index.js将从src/index.js编译而来,所以应该有项目的主文件
- dist目录应该被git添加为忽略(但如果它将是一个节点包,则不要为npm忽略它)
10.运行服务器并开始在src目录中创建应用程序。
npm run serve
II。更简单的方法(即用型样板)
如果这对你来说太多了,那么github上有完整的样板房https://github.com/maciejsikora/node-express-babel-boilerplate.
您可以使用带有--harmony标志的节点来运行具有es6功能的脚本
node -r babel-register scripts.js
这是的最佳解决方案
npx babel-node scripts.js
Babel节点在退出过程中不能很好地工作,kexec
包在这种情况下也没有帮助(正如我所尝试的)
在这两种情况下,你都需要使用.babelrc
,它应该描述你的应用程序的预设和插件。
npx
仅用于执行未安装npm
或yarn
的库。否则,您需要先安装npm i -g babel-cli
,然后再安装babel-node script.js
您需要安装babel-register
和babel-preset-es2015
预设,这些预设用于babel-register
选项以启用将ES6
转换为ES5
的飞行转译
npm install babel-register
npm install babel-preset-es2015
您的run.js文件:
// require babel-register and set Babel presets options to es2015
require('babel-register')({
presets: [ 'es2015' ]
});
require("./app.js6");
注意:现在您不需要.babelrc
文件来设置Babel presets
选项,因为我们使用require
方法
设置它我更喜欢
nodejs6 app.js6
这样的电话。
您可以尝试使用babel核心api的包装器解决方案:
// Save as es6.js
var babel = require("babel-core");
var argc = process.argv.length;
babel.transformFile(process.argv[argc - 1], function (err, result) {
eval(result.code);
});
使用node es6 thefile.js
运行您的es6特色脚本
参考:正式使用文档
npm init es6
它使用"type": "module"
设置创建一个package.json
文件。
从babel 6开始,您现在必须安装babel-register
并使用以下
require("babel-register");
一定要同时安装babel es2015预设。
请参阅:
https://stackoverflow.com/a/51485027/1549191
或者这个样板:
锅炉板:node-es6
由于此页面上的大多数答案不再有效,这是截至2023年5月的最新方法:
步骤1:安装必要的软件包
在项目目录中,运行以下命令以安装所需的软件包:npm install --save-dev @babel/core @babel/cli @babel/preset-env
这将安装Babel核心、命令行界面和用于编译现代JavaScript代码的预设。
步骤2:配置Babel
在项目的根目录中创建一个名为"babel.config.json"的文件,并向其中添加以下内容:{
"presets": ["@babel/preset-env"]
}
这篇文章告诉Babel使用@babel/preset-env
预设,其中包括对最新JavaScript语法的支持。
步骤3:更新`package.json`文件
打开您的package.json文件,并将以下脚本添加到脚本部分: "dev": "babel -w src -d lib | nodemon lib",
这只是一个例子,它可以根据您的项目结构进行更改此脚本将JavaScript文件从/src
目录编译到/lib
目录,然后在编译的文件上运行nodemon
。请注意,此脚本假定您的主条目文件名为index.js
。一个更通用的脚本是:
"<script name>: "babel -w <code directory> -d <final/dist directory> | <other scripts for running the server>"
- 如何在没有单词的情况下从命令行运行Node.js程序'节点'
- 在php中不运行java脚本的情况下重定向页面
- 在禁用浏览器flash插件的情况下运行Karma测试
- 在不加载页面的情况下运行javascript
- CSS转换获胜't在没有“setTimeout”的情况下运行
- CSS 转换不会在没有 setTimeout 的情况下运行
- 我的javascript不会在没有警报的情况下运行
- Apache Cordova:在不启动浏览器应用程序的情况下运行Cordova运行浏览器
- 强pm不会在NODE_ENV=生产的情况下运行
- Javascript在不打算运行的情况下运行多次
- 在不安装Zend优化器的情况下运行php文件
- 如何在没有缓存/cookie的情况下运行/调试Web应用程序项目
- 仅在尚未运行jQuery UI的情况下运行动画
- 如何在不停止的情况下永远运行node-js
- 如何在启用ES6功能的情况下运行Node.js应用程序
- 如何在没有网络工作者的情况下运行多个脚本
- 可以插入<脚本>标记可以在不使用JavaScript中的eval的情况下多次运行
- 节点包因果报应没有在没有信息的情况下运行
- 在不重新运行jquery验证的情况下检查表单是否有效
- Bxslider预加载程序在没有图像的情况下以无限循环运行