2016-06-11 14 views
10

Sto provando a npm collegare un modulo a un progetto usando webpack come suo bundler. Naturalmente, dopo aver provato molte cose, continuo a ricevere questo errore:collegamento npm con webpack - impossibile trovare il modulo

ERROR in ./src/components/store/TableView.jsx 
Module not found: Error: Cannot resolve module 'react-bootstrap-table' 

Ecco i passaggi esatti prendo quando si fa questo:

1.) cd ../forks/react-bootstrap-table 
2.) npm link 
(success, checked ~/.nvm/.../node_modules/react-bootstrap-table for symlink and it's there) 
3.) cd ../../projRoot/ 
4.) npm link react-bootstrap-table 
(no errors thrown?, says successful link) 
5.) node ./node_modules/webpack-dev-server/bin/webpack-dev-server.js 

soluzioni che ho provato:
- https://webpack.github.io/docs/troubleshooting.html
- How to make a linked component peerDepdencies use the equivalent node_modules of the script being linked to?
- e molti link viola sulla SERP di Google

webpack.config.js

const webpack = require('webpack') 
const path = require('path') 
const ROOT_PATH = path.resolve(__dirname) 

module.exports = { 
    devtool: process.env.NODE_ENV === 'production' ? '' : 'source-map', 
    entry: [ 
    'webpack/hot/only-dev-server', 
    './src/index.js' 
    ], 
    module: { 
    loaders: [{ 
     test: /\.jsx?$/, 
     exclude: /node_modules/, 
     loaders: ['react-hot','babel'] 
    }, 
    { 
     test: /\.scss$/, 
     loaders: ['style','css','sass'], 
     exclude: /node_modules/ 
    }, 
    { 
     test: /\.css$/, 
     loaders: ['style','css'] 
    }, 
    { 
     test: /\.(ttf|eot|svg|woff(2)?)(\?[a-z0-9]+)?$/, 
     loader: 'file-loader' 
    } 
    ] 
    }, 
    resolve: { 
    extensions: ['', '.js', '.jsx'], 
    fallback: path.resolve(__dirname, './node_modules') 
    }, 
    resolveLoader: { 
    fallback: path.resolve(__dirname, './node_modules') 
    }, 
    output: { 
    path: process.env.NODE_ENV === 'production' ? path.resolve(ROOT_PATH, 'app/dist') : path.resolve(ROOT_PATH, 'app/build'), 
    publicPath: '/', 
    filename: 'bundle.js' 
    }, 
    devServer: { 
    contentBase: path.resolve(ROOT_PATH), 
    historyApiFallback: true, 
    hot: true, 
    inline: true, 
    progress: true, 
    stats: 'errors-only', 
    host: '192.168.1.115' 
    }, 
    plugins: [ 
    new webpack.HotModuleReplacementPlugin() 
    ] 
} 

Note:
1. Questo è l'unico link simbolico nel progetto
2. corro npm installare la versione all'interno biforcuta (provato anche senza, doesn' t work)
3. Uso NVM, ma ho usato symlink prima senza Webpack.

Sono stato a questo per alcuni giorni, ogni aiuto sarà molto apprezzato.

+0

Anche a me. Nuts non esiste una risposta esistente da trovare. Il problema è ovvio: babel/webpack non segue o accetta i symlink – Tim

+0

Questa è una sorta di stopper per me. Sviluppo più librerie di supporto per le mie applicazioni in tandem con le mie applicazioni, e sembra che avrò bisogno di trovare un'alternativa al webpack per supportare questo flusso di lavoro. – Matt

+2

fatto divertente: il webpack ** non funziona ** con il collegamento npm. È "ben documentato" ma @ # $ * (difficile da trovare. Https://webpack.github.io/docs/troubleshooting.html#npm-linked-modules-doesn-t-find-their-dependencies. ci siamo imbattuti così spesso che abbiamo smesso di usare il link npm del tutto: se hai un fork, o punta a 'require ('../../../ yourfork')' con altrettanti '../ 'come è necessario andare alla directory fork, o in alternativa, puntare alla propria fork con un link github invece di un semifinale npm, o (e abbiamo iniziato a farlo) copiare letteralmente la propria fork nella directory node_modules per lavoro dev. –

risposta

1

Ok ragazzi, questo è specifico per il mio caso d'uso, ma assicuratevi di seguire tutte le istruzioni per costruire completamente la libreria che state simulando. Inizialmente, ho installato npm e gulp build, ma non era abbastanza. Ho dovuto eseguire alcuni comandi extra per fare in modo che la libreria si costruisse completamente.

Ora funziona! Se si riscontrano ancora problemi, consultare la documentazione di ogni libreria che si sta collegando e utilizzare la configurazione del pacchetto Web come modello per la risoluzione delle librerie esterne.

0

stavo affrontando un problema simile con webpack e finito con l'aggiunta di questo mio webpack.config.js:

module.exports = { 
    resolve: { 
     symlinks: false 
    } 
}; 

Ecco il link per webpack docs. Dal momento che la tua domanda è accaduta molto a webpack e la loro api, quindi non so quanta rilevanza abbia ancora la mia risposta in base alla tua domanda. Ma per le persone che affrontano questo o un problema simile oggi questa potrebbe essere una soluzione. Come per essere visto, ci sono ancora persone che si lamentano:

Problemi correlati