웹 패키지에서 생성된 스크립트를 가져오는 데 실패했습니다.
5326 단어 html-minifier
묘사
정황
유니버설 리얼리티 프로그램에 템플릿을 만들고 있습니다.
서버 측의 html 출력을 최소화하고 싶습니다.
그래서
npm install --save html-minifier
하고 import {minify} from "html-minifier";
했어요.그리고 서버를 구축하고 시작할 때 오류가 발생했습니다.
Error: ENOENT: no such file or directory, lstat 'C:\Users\tintypemolly\workspace\react-boilerplate\lib'
at Error (native)
at Object.fs.lstatSync (fs.js:982:18)
at Object.realpathSync (fs.js:1647:19)
at C:\Users\tintypemolly\workspace\react-boilerplate\build\~\html-minifier\~\uglify-js\tools\node.js:23:1
at Array.map (native)
at Object.<anonymous> (C:\Users\tintypemolly\workspace\react-boilerplate\build\~\html-minifier\~\uglify-js\tools\node.js:22:1)
at __webpack_require__ (C:\Users\tintypemolly\workspace\react-boilerplate\build\webpack:\webpack\bootstrap fb83bf644d298bef2a7c:19:1)
at Object.<anonymous> (C:\Users\tintypemolly\workspace\react-boilerplate\build\~\html-minifier\src\htmlminifier.js:8:1)
at __webpack_require__ (C:\Users\tintypemolly\workspace\react-boilerplate\build\webpack:\webpack\bootstrap fb83bf644d298bef2a7c:19:1)
at Object.<anonymous> (C:\Users\tintypemolly\workspace\react-boilerplate\build\webpack:\server.js:7:1)
Windows 10과 MacOS Sierra에서 이것을 실행합니다.node 버전은 6.6.0,npm 버전은 3.10.8입니다.
이것은 두 기계에서 모두 발생할 것이다.
오류가 발생한 곳은 이 줄이다.
https://github.com/TintypeMolly/react-boilerplate/blob/fail/html-minifier/src/server.js#L7
import {minify} from "html-minifier";
어떻게 번식합니까
git clone https://github.com/TintypeMolly/react-boilerplate.git
git reset --hard origin/fail/html-minifier
cd react-boilerplate
npm install
npm start
npm start
를 npm run build
로 교체한 다음 node build/server.js
로 교체할 수 있습니다.전자는 발전 모델이고 후자는 생산 모델이다.
이 두 가지 상황에서 모두 같은 오류가 발생할 수 있다.
왜 이런 상황이 발생했습니까?
나는 환매 협의에 의존하는
uglify-js
가 다음과 같은 조작을 하고 있음을 발견했다.var FILES = exports.FILES = [
"../lib/utils.js",
"../lib/ast.js",
"../lib/parse.js",
"../lib/transform.js",
"../lib/scope.js",
"../lib/output.js",
"../lib/compress.js",
"../lib/sourcemap.js",
"../lib/mozilla-ast.js",
"../lib/propmangle.js",
"./exports.js",
].map(function(file){
return fs.realpathSync(path.join(path.dirname(__filename), file));
});
나는 server.js
를 사용하여 프로젝트를 구축할 때 이 코드들은 webpack
출력 파일로 포장된다고 생각한다.webpack
로 프로젝트를 구축할 때 출력은 파일입니다.uglify-js
에 대해 path.dirname(__filename)
는 uglify-js
원본 디렉터리를 가리킨다.그러나 내 프로젝트에 포장되면
/path/to/project/build/server.js
더 이상 아무것도 의미하지 않는다.이것은 단지 내 프로젝트의 생성 출력 디렉터리이기 때문에 마지막으로
Error: ENOENT: no such file or directory
이것은 html-minifier
해결할 수 있는 문제입니까, 아니면 제가 uglify-js
또는 webpack
에 문제를 만들어야 합니까?토론 #1
이 문제에 대한 상세한 설명에 감사드립니다.따라서, 만약 제가 정확하게 이해한다면, 브라우저에서 후자를 사용하지 않고, 이 노드에서 실행하기 위해
webpack
와 의존항에서 html-minifier
을 사용하려고 시도하고 있습니다.js 환경?만약 이렇다면, html-minifier
과 uglify-js
모두 browserify
이 용례에 사용될 것입니다. here 에서 부품을 얻을 수 있습니다.토론 #2
총괄적으로 말하자면, 당신이 특정한 용례를 원래대로 일하고 싶다면webpack
에 문제를 제출하여 그들이 당신을 도와 해결하도록 해야 한다.토론 #셋
So if I understand correctly, you are trying to use webpack on html-minifier and its dependencies in order to use the latter within a browser as opposed to running in native Node.js environment?
아니오, 서버 쪽 (
html-minifier
에서 node
을 사용하여 http 요청에 대한 http 응답을 최소화하고 싶습니다.클라이언트에서 이걸 사용하지 않습니다.나는
browserify
가 이런 문제를 어떻게 처리하는지 연구해야 한다고 생각한다. webpack
도 비슷한 문제가 있기를 바란다.고맙습니다.
토론 #4
@TintypeMolly 이 문제를 해결할 방법을 생각해 냈습니까?토론 #5
@acusti는 불가능합니다.다른 축소 라이브러리를 사용합니다.토론 #6
나는 같은 문제에 부딪혔다.나는 현재 웹 패키지를 사용하는 프로젝트가 브라우저 ify보다 훨씬 많다고 생각한다.안타깝게도 이 미니들은 사용할 수 없다.실제로 문제는 웹 패키지가 아니라 미니필드/uglify에 있다.그것은 단지 편의를 위해 fs 패키지를 필요로 한다.즉, uglify의 조작은 fs가 필요하지 않고'우아한'코드만 만드는 데 사용된다.minifier는 @Alexlasl의 fork를 사용하기 때문에, 이것은 문제를 제출하는 정확한 항목이라고 생각합니다.
나는 이 모듈을 사용하는 것이 몇 줄의 코드를 절약하는 우아한 코드를 사용하는 것보다 더 중요하다고 생각한다.나도 같은 문제가 있다.
웹 패키지를 사용하여 SSR에 react 프로그램을 만들었습니다. HTML을 동적으로 축소하려고 시도하고 있지만 성공하지 못했습니다.
토론 #7
나는 마운트토론 #8
된null-loader
파일의 경로에서 main
를 사용하여 이 문제를 해결했다.나는 다음과 같이 덧붙였다.
rules: [
// ... some rules
{
test: path.resolve(__dirname, 'node_modules/uglify-js/tools/node.js'),
loader: 'null-loader',
},
// ...some more rules
]
내 홈페이지 설정에 들어가세요.나는 이것이
uglify-js
자체의 문제가 아니라는 것에 동의하지만, 나는 이것이 해결 방안이라고 생각한다.아마도 이것은 html-minifier
파일이 main
의 맨 윗부분 디렉터리에 없는 문제일 것이다.
Reference
이 문제에 관하여(웹 패키지에서 생성된 스크립트를 가져오는 데 실패했습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://github.com/kangax/html-minifier/issues/727텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)