2016-08-22 116 views
3

我正在通過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文件。因此錯誤。

enter image description here

但是,直接檢查這些文件表明,這個情況並非如此:

enter image description here

你可以找到構建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。

+0

當瀏覽器請求包時,服務器返回什麼? –

+0

@DavinTryon,更新了問題。 – Logister

+0

它看起來像你正在做請求.js,這可能會拋出瀏覽器。您需要將其作爲.html請求,或者確保您從快速方面返回正確的內容類型。 – agmcleod

回答

1

由於agmcleod建議,我需要改變我的快遞路由器處理請求的方式:get('*', ...需要切換到get('/', ...。此外,我需要將我的webpack公共路徑更改爲'/'而不是path.join(__dirname, 'dist')。 Webpack將完全限定的目錄放在我的src屬性中,並沒有使它們與我的express服務器中的靜態路徑相關。

在引用的回購中還有其他問題,但我相信它們與發佈的問題無關。

感謝@DavidTyron和@agmcleod讓我走上正軌。