2017-11-23 8 views
0

에서 나는 웹팩에 명시 응용 프로그램을 시도하고 있지만 다음과 같은 문제에 봉착 :오류 : 모듈을 찾을 수 없습니다. " 나는/페이지를 검색하려고 할 때마다 webpackMissingModule

Getting Error: Cannot find module "." at webpackMissingModule

다음은이 재현 코드입니다 :

import express from 'express'; 

const app = express(); 
const port = 8088; 

app.set('view engine', 'pug') 

app.listen(port,() => console.log(`Listening on ${port}`)); 

app.get('/', (req, res) => { 
    res.render('index'); 
}); 

은 처음에는 pug가 모듈에 포함되어 있지 않았기 때문에 처음에는 페이지에 require('pug')을 추가하려고 시도했으나 오류가 런타임이 아닌 서버 시작으로 옮겨 졌다고 생각했습니다.

여기 내 웹팩 구성이다 : 나는 또한 모든 노드 모듈을 포함하도록 시도했지만 한 7.1

웹팩 내가 명시 4.16, 흙 2.0 RC4를 사용하고

const path = require('path'); 
module.exports = { 
    entry: { 
     index: path.join(__dirname, 'index.js') 
    }, 
    target: 'node', 
    module: { 
     rules: [ 
      { 
       test: /\.js$/, 
       loader: 'babel-loader', 
       include: [ 
        __dirname 
       ], 
       exclude: /node_modules/ 
      } 
     ] 
    }, 
    resolve: { 
     modules: [__dirname, 'node_modules'] 
    }, 
    output: { 
     path: __dirname, 
     filename: '[name].entry.js' 
    } 
} 

, 3.8 및 바벨 로더 I 다른 오류가 발생합니다 (dP.f은 기능이 아닙니다)

답변

1

node_modules은 babel에서 컴파일되지 않지만 해당 코드는 여전히 번들에 포함되어 있기 때문입니다.

node_modules이 번들에 포함되지 않도록해야합니다.

webpack-node-externals

npm install webpack-node-externals --save-dev

를 설치하고 웹팩 설정에 두 줄을 추가합니다.

const path = require('path'); 
const nodeExternals = require('webpack-node-externals'); //include this 

module.exports = { 
    entry: { 
     index: path.join(__dirname, 'index.js') 
    }, 
    target: 'node', 
    module: { 
     rules: [ 
      { 
       test: /\.js$/, 
       loader: 'babel-loader', 
       include: [ 
        __dirname 
       ], 
       exclude: /node_modules/ 
      } 
     ] 
    }, 
    resolve: { 
     modules: [__dirname, 'node_modules'] 
    }, 
    externals: [nodeExternals()], // just add this 
    output: { 
     path: __dirname, 
     filename: '[name].entry.js' 
    } 
} 
+0

이 작업은 가능하지만 직접 번들을 배포 할 수 없으므로 아마 이상적이지 않습니다. 모든 모듈을 프로덕션에 설치해야합니다. 그러나 필자는 화이트리스트를 통해 필자가 필요로하는 것을 얻을 수있다. – apokryfos

+0

시도하지는 않았지만 https://github.com/nexe/nexe를 보거나 새로운 프로젝트를 시작하는 경우를 살펴볼 수있다. 골양에서 –