我尝试使用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-compose
和RUN npm ls
。在我的Dockerfile上,我添加了RUN ls node_modules
和react-router
:我可以看到react-router-dom
和docker-compose up --force-recreate
。所以有这里!
使用泊坞窗的任何缓存?
我重命名我的图片,以确保使用好的而不是旧的。
我还使用npm install react-router-dom -g
重新启动容器。
所以我认为没关系。
Erreur
我想我在server.js文件中犯了一个错误,但我不知道...... 我尝试过没有成功:
require('react-router-dom')
以确保已安装require('./node_modules/react-router-dom')
替换为import from
但得到相同的错误(除了是找不到的新路径)。答案 0 :(得分:1)
对不起,迟到了。它最终是一个 Docker / Docker-compose问题 ......
即使使用docker-compose up --force-recreate
,仍会使用旧图像。
我在docker-compose.yml文件中重命名了我的容器,所以在下次启动时,它创建了一个带有新图像的新容器。