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

时间:2017-06-23 05:13:34

标签: reactjs docker react-router browserify

我尝试使用react-router,但无法使用browserify。我坚持这个错误:

server.js

我的第一个js文件是app.js,它生成一个要加载var React = require('react'); require('react-router-dom'); React.render(<div><p>Blop</p></div>, document.getElementById('base_ihm')); 的包。 我删除了app.js文件中的所有内容,以确保没有任何个人组件产生冲突。所以现在很轻松!但仍然无效。

我的app.js文件:

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); });

{
  "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"
  }
}

反应路由器安装得好吗?

我的package.json文件的内容是:

docker

我使用docker-composeRUN npm ls。在我的Dockerfile上,我添加了RUN ls node_modulesreact-router:我可以看到react-router-domdocker-compose up --force-recreate。所以有这里!

使用泊坞窗的任何缓存?

我重命名我的图片,以确保使用好的而不是旧的。 我还使用npm install react-router-dom -g重新启动容器。 所以我认为没关系。

使用browserify的server.js

Erreur

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

  1. 我尝试添加一个全局:true然后global:false at my transform('reactify')
  2. 在我的Dockerfile中,我尝试添加require('react-router-dom')以确保已安装
  3. 我最终升级了我的版本。并且还在4.1.1版中尝试了react-router-dom
  4. 我将require('./node_modules/react-router-dom')替换为import from但得到相同的错误(除了是找不到的新路径)。
  5. 你知道吗? 谢谢你的帮助!

1 个答案:

答案 0 :(得分:1)

对不起,迟到了。它最终是一个 Docker / Docker-compose问题 ......

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

我在docker-compose.yml文件中重命名了我的容器,所以在下次启动时,它创建了一个带有新图像的新容器。