嗨,我正在尝试向我的代码添加一个模块。在 ES5 中我使用了
var promise = require('bluebird');
所以我尝试了
import { promise } from 'bluebird'
,但没有成功,不知道为什么?
一般要使用
import
代替require
,我们应该使用一些外部模块,因为Node.js
还不支持ES6的导入。
为此,我们首先必须安装这些模块
babel-preset-es2015
和 babel-cli
。
npm install --save-dev babel-preset-es2015 babel-cli
然后我们创建一个名为
.babelrc
的点文件,在其中添加此对象:
{
"presets": ["es2015"]
}
现在我们可以使用
import
代替 require
。例如,我们可以尝试一些 server.js
文件,使用 express
而不是 import
来调用 require
模块:
import express from 'express'; //instead of const express = require('express');
const app = express();
app.get('/',function (req, res){
res.send('hello from import');
});
app.listen(4444, function(){
console.log('server running on port 4444');
});
最后在我们的 shell 中我们必须运行这个命令:
./node_modules/.bin/babel-node app.js --presets es2015
实际上
import { promise } from 'bluebird'
在es5中翻译为var promise = require('bluebird').promise
。所以 es6 中的 var promise = require('bluebird')
相当于 import * as promise from 'bluebird'
编辑:基于@Bergi的评论:
import Promise from 'bluebird'
是一个更简化的版本。
在
Greeter.js
中(放入Scripts
文件夹中):
export class Greeter() {
constructor() {
}
getGreeting() {
alert('Hello from the greeter class');
}
}
称呼它:
<script>
import {Greeter} from "/Scripts/Greeter.js";
let greeter = new Greeter();
greeter.getGreeting();
</script>
使用此标志:
--es-module-specifier-resolution=node
node --es-module-specifier-resolution=node index.js