[JavaScript] express() 에서 "express is not a function"다음에 TS 의 "export ="와 "import = require()"
6997 단어 자바스크립트TypeScriptExpressNode.js
express is not a function
와 나왔기 때문에 원인과 해결책을 공유합니다.다음에
export =
와 import = require()
에 대해입니다.환경
import측은 JavaScript, 트랜스파일이라든지는 일절 없음.
node: v14.1.0
package.json
{
...
"type": "module",
"dependencies": {
"express": "^4.17.1",
...
},
...
}
재현 VTR
index.js
import * as express from "express";
const app = express();
node ./index.js
실행하면
const app = express();
^
TypeError: express is not a function
오류 발생.
덧붙여서, USAGE에 따랐다. 1
@types/express/index.d.ts
/* =================== USAGE ===================
import * as express from "express";
var app = express();
=============================================== */
원인
CommonJS와 ESModulesd에서 반환되는 값에 차이가있었습니다.
import * as express from "express";
console.log(typeof express); // => object
const express = require("express");
console.log(typeof express); // => function
import
default: [Function: createApplication] { ... }
require
[Function: createApplication] { ... }
즉, 반환값이 default export가 되었기 때문에 참조 에러를 일으키고 있었다.
대응책
이렇게 한다.
import express from "express";
const app = express();
또는,
import * as express from "express";
const app = express.default();
원래 트랜스 파일도 없이 사용한다면, CommonJS 모듈이라면 CommonJS의 임포트 (
const express = require("express");
) 로 읽어들이는 것이 베터라고 하는 쯔코미는 각오하고 있습니다!이후 덤
export =
이름은 "내보내기 대입".
Express의 형태 정의 파일을 들여다 보면 이렇게 되어 있다.
@types/express/index.d.ts
...
/**
* Creates an Express application. The express() function is a top-level function exported by the express module.
*/
declare function e(): core.Express;
...
export = e;
CommonJS와 AMD를 고려하지 않고 내보낼 수 있는 편리한 기능.
즉, 이것은 CommonJS 또는 AMD 모듈입니다. 라는 표시.
import = require()
이름은 「가져오기 대입」.
내보내기 할당 (
export =
)을 사용하여 내보낸 모듈을 가져올 때 사용되는 것 같습니다.지금은 굳이 사용하는 이유는 없을 것 같다.
가져오기 할당, 가져오기 할당 사용 예
// export側
function hoge() {
return 'hoge';
}
const fuga = 'fuga';
export = {
hoge,
fuga
};
// import側
import hogefuga = require('./export');
console.log(hogefuga); // => { hoge: [Function: hoge], fuga: 'fuga' }
감상
수수함에 시간을 녹여 기사로 해 주었어. .
뭔가 지적 등 있으면 댓글 주시면 다행입니다.
참고
export = and import = require()
어느 시점의 소스 https://魏Tub. 작은 m/df란 칸d/데피에서 lyTy페d/bぉb/06002c2C495359그림 b97C48f71f3f6bc장 c25c7225/ty페s/그림 xp레스/인으로 x. d. ts ↩
Reference
이 문제에 관하여([JavaScript] express() 에서 "express is not a function"다음에 TS 의 "export ="와 "import = require()"), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/kozzzz/items/59816861e6a2eb80cb34텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)