Browserify无法找到模块'react-router-dom'

问题描述:

我尝试使用react-router,但无法使其与browserify一起工作。我坚持这个错误:Browserify无法找到模块'react-router-dom'

events.js:182 
     throw er; // Unhandled 'error' event 
    ^

Error: Cannot find module 'react-router-dom' from '/usr/src/app' 
    at /usr/src/app/node_modules/browserify/node_modules/browser-resolve/node_modules/resolve/lib/async.js:46:17 
    at process (/usr/src/app/node_modules/browserify/node_modules/browser-resolve/node_modules/resolve/lib/async.js:173:43) 
    at ondir (/usr/src/app/node_modules/browserify/node_modules/browser-resolve/node_modules/resolve/lib/async.js:188:17) 
    at load (/usr/src/app/node_modules/browserify/node_modules/browser-resolve/node_modules/resolve/lib/async.js:69:43) 
    at onex (/usr/src/app/node_modules/browserify/node_modules/browser-resolve/node_modules/resolve/lib/async.js:92:31) 
    at /usr/src/app/node_modules/browserify/node_modules/browser-resolve/node_modules/resolve/lib/async.js:22:47 
    at FSReqWrap.oncomplete (fs.js:152:21) 
npm info lifecycle [email protected]~start: Failed to exec start script 

我的第一个js文件是server.js其产生一束加载app.js。 我删除了我的app.js文件中的所有内容,以确保没有任何个人组件产生冲突。所以现在很轻!但仍然不起作用。

我app.js文件:

var React = require('react'); 
require('react-router-dom'); 
React.render(<div><p>Blop</p></div>, document.getElementById('base_ihm')); 

没有require('react-router-dom');,一切正常!

server.js

var express = require('express'); 
var browserify = require('browserify'); 
var React = require('react'); 
var jsx = require('node-jsx'); 
var app = express(); 

// Constants 
const PORT = 8080; 

jsx.install(); 

// Enable compression 
var compression = require('compression'); 
app.use(compression()); 

// Create a path name bundle.js which call app.js and apply browserify 
app.use('/bundle.js', function(req, res) { 
    res.setHeader('content-type', 'application/javascript'); 
    browserify('./app.js', { 
    debug: true 
    }) 
    .transform('reactify') 
    .bundle() 
    .pipe(res); 
}); 

// static ressources 
app.use(express.static(__dirname + '/static/css')); 
app.use(express.static(__dirname + '/static/images')); 

// Main route 
app.use('/', function(req, res) { 

    res.setHeader('Content-Type', 'text/html'); 
    res.end(React.renderToStaticMarkup(

     React.createElement(
      'html', null, 

      // Header 
      React.createElement(
       'head', null, 

       // Title 
       React.createElement('title', null, 'Irregular Verbs'), 

       // Meta 
       React.createElement('meta', {charSet: 'UTF-8'}, null), 
       React.createElement('meta', {name: 'viewport', content: 'width=device-width, initial-scale=1'}, null), 

       // Custom CSS 
       React.createElement('link', { rel: 'stylesheet', href:  'main.css' }, null) 
      ), 

      // Body 
      React.DOM.body(
       null, 
       React.DOM.div({ 
        id: 'base_ihm', 
        dangerouslySetInnerHTML: { 
        __html:  React.renderToString(React.createElement('div', null)) 
        } 
       }), 

       // Use the path create just before 
       React.DOM.script({ 
        src: '/bundle.js' 
       }) 
      ) 
     ) 
    )); 
}); 

var server = app.listen(PORT, function() { 
    var addr = server.address(); 
    console.log('Listening @ http://%s:%d', addr.address, addr.port); 
}); 

是反应路由器安装好?

还有就是我的package.json文件的内容:

{ 
    "main": "server.js", 
    "scripts": { 
    "start": "node server.js" 
    }, 
    "dependencies": { 
    "express": "^4.13.3", 
    "body-parser": "^1.15.2", 
    "node-jsx": "^0.13.3", 
    "react": "^15.6.1", 
    "react-dom": "^15.6.1", 
    "react-router-dom": "^4.0.0", 
    "browserify": "^14.4.0", 
    "reactify": "^1.1.1", 
    "mysql": "^2.11.1" 
    } 
} 

我用dockerdocker-compose。在我的Dockerfile上,我添加了RUN npm lsRUN ls node_modules:我可以看到react-routerreact-router-dom。所以这里有!

任何缓存与码头?

我重命名我的图像,以确保使用好的而不是旧的。 我也使用docker-compose up --force-recreate重新启动我的容器。 所以我认为它没问题。

ERREUR与在browserify使用

我想我犯了一个错误,我server.js文件,但我不知道server.js ...... 有什么我都没有尝试过成功:

  1. 我尝试添加一个全球性的:真的,那么全球:假我的变换(“reactify”)
  2. 在我Dockerfile,我尝试添加npm install react-router-dom -g,以确保它被安装
  3. 我最终升级了我的版本。并且还尝试了版本4.1.1中的react-router-dom
  4. 我将require('react-router-dom')替换为require('./node_modules/react-router-dom'),但得到相同的错误(除了它是未找到的新路径)。

你有什么想法吗? 谢谢你的帮助!

对不起,对于迟到的答案。这是最后一个码头工/码头工合成问题 ...

即使使用docker-compose up --force-recreate,仍旧使用旧图像。

我将我的容器改名为docker-compose。yml文件,因此在下一次启动时,它会使用新映像创建一个新容器。