在 ES6 中使用 import 而不是 require 添加模块

问题描述 投票:0回答:4

嗨,我正在尝试向我的代码添加一个模块。在 ES5 中我使用了

var promise = require('bluebird');

所以我尝试了

import { promise } from 'bluebird'
,但没有成功,不知道为什么?

javascript ecmascript-6
4个回答
16
投票

一般要使用

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

12
投票

实际上

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'
是一个更简化的版本。


2
投票

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>

0
投票

使用此标志:

--es-module-specifier-resolution=node

node --es-module-specifier-resolution=node index.js
© www.soinside.com 2019 - 2024. All rights reserved.