如何更改这些模块的这些 require 语句以改为使用 import 语句?
How do I change these require statements for these modules to use import statements instead?
我希望停止对以下模块使用 require()
语句,因为 Node 版本 11 现在支持 ES6,但我找不到任何关于如何编写以下内容的文档,除了 express
作为 import
语句:
import express from "express";
const http = require('http');
import bodyParser from 'body-parser';
const morgan = require('morgan');
morgan
和 http
是否与 bodyParser
相同?
例如morgan
我只看到:
import logger from 'morgan';
对于http
我只看到:
import * as http from 'http';
require
是模块的主要语法(在 Node 中)。正如 Patrick Roberts 提到的,您只能将它们用于 .mjs
(模块 JS)文件。 require
是导入 NPM package/Node 模块的方式:
const express = require("express");
const http = require("http");
const bodyParser = require("body-parser");
const morgan = require("morgan");
如果您确实希望使用 ES6 import/export
,则需要使用 .mjs
,如 here 所述。
使用 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')
只要在其 package.json 文件中包含此字段,就可以导入任何属于 ECMAScript 模块的模块而无需使用 .mjs 扩展名:
"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"
}
如果您要使用的模块尚未更新为支持使用导入语法导入,那么您别无选择,只能使用 require(但使用我上面的解决方案这不是问题)。
我希望停止对以下模块使用 require()
语句,因为 Node 版本 11 现在支持 ES6,但我找不到任何关于如何编写以下内容的文档,除了 express
作为 import
语句:
import express from "express";
const http = require('http');
import bodyParser from 'body-parser';
const morgan = require('morgan');
morgan
和 http
是否与 bodyParser
相同?
例如morgan
我只看到:
import logger from 'morgan';
对于http
我只看到:
import * as http from 'http';
require
是模块的主要语法(在 Node 中)。正如 Patrick Roberts 提到的,您只能将它们用于 .mjs
(模块 JS)文件。 require
是导入 NPM package/Node 模块的方式:
const express = require("express");
const http = require("http");
const bodyParser = require("body-parser");
const morgan = require("morgan");
如果您确实希望使用 ES6 import/export
,则需要使用 .mjs
,如 here 所述。
使用 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')
只要在其 package.json 文件中包含此字段,就可以导入任何属于 ECMAScript 模块的模块而无需使用 .mjs 扩展名:
"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"
}
如果您要使用的模块尚未更新为支持使用导入语法导入,那么您别无选择,只能使用 require(但使用我上面的解决方案这不是问题)。