source

require가 정의되어 있지 않습니까?노드.js

manysource 2023. 7. 24. 22:36

require가 정의되어 있지 않습니까?노드.js

이제 막 Node.js로 작업을 시작했습니다.내 안에서app/js파일, 나는 다음과 같은 일을 하고 있습니다.

app.js

var http = require('http');

http.createServer(function (request, response) {
  response.writeHead(200, {'Content-Type': 'text/plain'});
  response.end('Am I really running a server?!');
}).listen(8080, '127.0.0.1');

console.log('running server!');

터미널에 있을 때 도망갈 때node app.js콘솔이 삐죽 나오다'running server!'하지만 내 브라우저에서는Uncaught ReferenceError: require is not defined.

터미널에서는 제대로 작동하지만 브라우저에서는 작동하지 않는 이유를 누가 설명해 줄 수 있습니까?

노드의http-server내 페이지를 위해.

버전 14 이후의 Node.js에서도 이러한 현상이 발생할 수 있습니다.

패키지 유형을 에서 모듈로 선언할 때 발생합니다.package.json이렇게 하면 다음과 같은 특정 CommonJS 변수를 사용할 없습니다.require.

이 문제를 해결하려면 제거"type": "module"당신의package.json그리고 당신이 마지막으로 끝나는 파일이 없는지 확인하세요..mjs.

터미널에서 노드 응용 프로그램을 실행하고 스크립트를 실행합니다.이것은 브라우저에서 스크립트를 직접 실행하는 것과는 매우 다른 실행 환경입니다.Javascript 언어는 대체로 동일하지만(Chrome 브라우저를 실행하는 경우 V8 모두 동일함) 라이브러리와 같은 나머지 실행 환경은 동일하지 않습니다.

node.js는 V8 Javascript 엔진과 다수의 서버측 라이브러리를 결합한 서버측 Javascript 실행 환경입니다.require()는 node.js가 환경에 추가하는 기능 중 하나입니다.따라서 터미널에서 노드를 실행하면 다음을 포함하는 환경이 실행됩니다.require().

require()는 브라우저에 내장된 기능이 아닙니다.이것은 브라우저가 아닌 node.js의 특정 기능입니다.따라서 브라우저에서 스크립트를 실행하려고 할 때 브라우저에는require().

브라우저에서 일부 형식의 node.js 코드를 실행하는 방법이 있습니다(전부는 아님).예를 들어 다음과 같은 브라우저 대체 기능을 얻을 수 있습니다.require()유사하게 작동합니다(동일하지는 않지만).

그러나 브라우저에서 웹 서버를 실행할 수 없습니다. 브라우저에서 웹 서버를 실행할 수 없습니다.


다음을 사용하여 브라우저에서 노드 스타일 모듈을 사용할 수 있는 브라우저 수정에 관심이 있을 수 있습니다.require()진술들.

Abel이 말했듯이, Node > = 14의 ES Modules는 더 이상 없습니다.require

추가하려면 파일 맨 위에 다음 코드를 입력합니다.

import { createRequire } from 'module';
const require = createRequire(import.meta.url);

출처: https://nodejs.org/api/modules.html#modules_module_createrequire_filename

Node.JS는 브라우저 기술이 아닌 서버 측 기술입니다.따라서 노드별 호출은 다음과 같습니다.require()브라우저에서 작동하지 않습니다.

노드에서 브라우저별 모듈을 제공하려면 browserify 또는 webpack을 참조하십시오.

제거하기만 하면 됩니다."type":"module"당신의 소포에서.json.

다음 단계를 수행하여 이 문제를 해결합니다.

1단계: 생성addRequire.js프로젝트 루트에 있는 파일입니다.

2단계: 내부 2단계addRequire.js합니다.

import { createRequire } from "module";
const require = createRequire(import.meta.url);

global.require = require; //this will make require at the global scobe and treat it like the original require

을 3단계: 파일을 .app.js head

import "./start/addRequire.js";

은 이제당은을 가지고 있습니다.require 옆에import전체 프로젝트에 걸쳐 모두 사용할 수 있습니다.

1: 포트인 1:Add require()함수는 코드의 행만 호출합니다.app.js 또는 일또는main.jsjava.

2: "" " " " " " " 을 합니다.pacakage.json파일. 업데이트되지 않으면 "npmi"를 실행합니다.

내 실수:ESLint를 프로젝트에 설치했는데 설문지를 작성하고 잘못된 유형의 모듈을 선택했을 때 실수를 했습니다) 아마도 누군가에게 도움이 될 것입니다.)

프로젝트에서 사용하는 모듈 유형은 무엇입니까?* commonjs

패키지에서 아래 줄을 제거하여 해결합니다.json 파일

 "type": "module"

그것이 문제를 해결하기를 바랍니다.

언급URL : https://stackoverflow.com/questions/31931614/require-is-not-defined-node-js