Как мне изменить эти операторы require для этих модулей, чтобы использовать вместо них операторы import? - PullRequest
1 голос
/ 06 мая 2019

Я хочу прекратить использовать операторы require() для следующих модулей, поскольку Node версии 11 теперь поддерживает ES6, но я не могу найти какую-либо документацию о том, как написать следующее, кроме express в качестве оператора import:

import express from "express";
const http = require('http');
import bodyParser from 'body-parser';
const morgan = require('morgan');

Это то же самое, что и bodyParser для morgan и http?

Например, для morgan Я видел только:

import logger from 'morgan';

и для http я только видел:

import * as http from 'http';

Ответы [ 2 ]

1 голос
/ 06 мая 2019

require - это основной синтаксис (в узле) для модулей.Как упоминал Патрик Робертс, вы можете использовать их только для файла .mjs (модуль JS).require - это способ импорта пакета / модуля NPM:

const express = require("express");
const http = require("http");
const bodyParser = require("body-parser");
const morgan = require("morgan");

Если вы хотите использовать ES6 import/export, вам нужно использовать .mjs, как указано здесь .

0 голосов
/ 23 мая 2019

Используя Node v12.2.0, я могу импортировать все стандартные модули, например:

import * as Http from 'http'
import * as Fs from 'fs'
import * as Path from 'path'
import * as Readline from 'readline'
import * as Os from 'os'

По сравнению с тем, что я делал ранее:

const
  Http = require('http')
  ,Fs = require('fs')
  ,Path = require('path')
  ,Readline = require('readline')
  ,Os = require('os')

Любой модуль, который является модулем ECMAScript, может бытьимпортируется без использования расширения .mjs, если у него есть это поле в файле package.json:

"type": "module"

Поэтому убедитесь, что вы поместили такой файл package.json в ту же папку, что и модульвы делаете.

И для импорта модулей, не обновленных с поддержкой модулей ECMAScript, вы можете сделать так:

// Implement the old require function
import { createRequire } from 'module'
const require = createRequire(import.meta.url)

// Now you can require whatever
const
  WebSocket = require('ws')
  ,Mime = require('mime-types')
  ,Chokidar = require('chokidar')

И, конечно, не забывайте, что это необходимо для фактического запускаскрипт, использующий импорт модуля:

node --experimental-modules my-script-that-use-import.js

И что родительской папке нужен этот файл package.json, чтобы этот скрипт не жаловался на синтаксис импорта:

{
  "type": "module"
}

Если модульЕсли вы хотите использовать, он не был обновлен для поддержки импорта с использованием синтаксиса импорта, тогда у вас нет другого выбора, кроме как использовать требование (но с моим решением, приведенным выше, это не проблема).

...