我正在通過react router tutorial使用我自己的自定義webpack構建,並且出現「意外令牌<」錯誤。這通常是由於babel transpiler being incorrectly specified。但是,這不是這種情況。我的編譯器在開發過程中按照指定的工作方式工作,但在生產版本的相同設置下失敗。我不知道爲什麼。React意外令牌<
我.babelrc文件具有正確的預設:
...
"presets": ["es2015", "stage-0", "react"]
...
我webpack.config.js使用它來transpile用於開發:
loaders: [{
test: /\.js$/,
loaders: ['react-hot', 'babel?cacheDirectory=' + PATHS.cache],
exclude: PATHS.node_modules
}...
我webpack.config.js使用這transpile爲督促:
loaders: [{
test: /\.js$/,
loader: 'babel',
exclude: PATHS.node_modules,
}...
和我的package.json擁有所有正確的庫:
...
"devDependencies": {
"babel-core": "^6.0.20",
"babel-eslint": "^4.1.3",
"babel-loader": "^6.2.5",
"babel-plugin-transform-runtime": "^6.12.0",
"babel-preset-es2015": "^6.0.15",
"babel-preset-react": "^6.0.15",
"babel-preset-react-hmre": "^1.1.1",
"babel-preset-stage-0": "^6.0.15",
...
"dependencies": {
"react": "^0.14.6",
"react-d3-wrap": "^2.1.2",
"react-dom": "^0.14.6",
"react-redux": "^4.4.5",
"react-router": "^2.7.0",
...
奇怪的是,Chrome的報告說,從index.html中的HTML實際上已經取代的主要.js文件。因此錯誤。
但是,直接檢查這些文件表明,這個情況並非如此:
你可以找到構建here
任何想法可能是什麼的回購去這裏?
編輯:當我的服務器請求捆綁軟件時,它返回html。因此,也許有一些錯誤督促服務器:
var express = require('express');
var path = require('path');
var compression = require('compression');
var app = express();
app.use(express.static(path.join(__dirname, 'dist')));
app.get('*', function (req, res) {
res.sendFile(path.join(__dirname, 'dist', 'index.html'))
});
var PORT = process.env.PORT || 8080;
app.listen(PORT, function() {
console.log("Production express server running at localhost: " + PORT)
});
EDIT2:有些事情錯了,我怎麼會在這裏解決的要求。如果我刪除:
app.get('*', function (req, res) {
res.sendFile(path.join(__dirname, 'dist', 'index.html'));
});
然後我可以發送請求到捆綁並返回捆綁。通過這一行,發送一個請求來獲取包返回index.html。
當瀏覽器請求包時,服務器返回什麼? –
@DavinTryon,更新了問題。 – Logister
它看起來像你正在做請求.js,這可能會拋出瀏覽器。您需要將其作爲.html請求,或者確保您從快速方面返回正確的內容類型。 – agmcleod