我已经开始研究 Node JS了 。
这是我的文件。
index.html
<!DOCTYPE html> <html> <head> </head> <body> <div id="app"> <h1>Hello<h1> </div> <script src='assets/bundle.js'></script> </body> </html>
app.js
var http = require("http"), path = require('path') fs = require("fs"), colors = require('colors'), port = 3000; var Server = http.createServer(function(request, response) { var filename = path.join(__dirname, 'index.html'); fs.readFile(filename, function(err, file) { if(err) { response.writeHead(500, {"Content-Type": "text/plain"}); response.write(err + "\n"); response.end(); return; } response.writeHead(200); response.write(file); response.end(); }); }); Server.listen(port, function() { console.log(('Server is running on http://localhost:'+ port + '...').cyan);
webpack.config.js
module.exports = { entry: './src/index.js', output: { path: __dirname + '/assets', filename: 'bundle.js' } }
更新 bundle.js
/******/ (function(modules) { // webpackBootstrap /******/ // The module cache /******/ var installedModules = {}; /******/ // The require function /******/ function __webpack_require__(moduleId) { /******/ // Check if module is in cache /******/ if(installedModules[moduleId]) /******/ return installedModules[moduleId].exports; /******/ // Create a new module (and put it into the cache) /******/ var module = installedModules[moduleId] = { /******/ exports: {}, /******/ id: moduleId, /******/ loaded: false /******/ }; /******/ // Execute the module function /******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); /******/ // Flag the module as loaded /******/ module.loaded = true; /******/ // Return the exports of the module /******/ return module.exports; /******/ } /******/ // expose the modules object (__webpack_modules__) /******/ __webpack_require__.m = modules; /******/ // expose the module cache /******/ __webpack_require__.c = installedModules; /******/ // __webpack_public_path__ /******/ __webpack_require__.p = ""; /******/ // Load entry module and return exports /******/ return __webpack_require__(0); /******/ }) /************************************************************************/ /******/ ([ /* 0 */ /***/ function(module, exports) { alert('Hello'); /***/ } /******/ ]);
因此,当我点击一个 app.js 并访问地址(localhost:3000)时,我在控制台中得到了错误。
bundle.js:1未捕获的SyntaxError:意外的令牌<
另外我的JS文件没有运行。有人可以建议一些解决办法吗?
提前致谢
您的服务器:
var Server = http.createServer(function(request, response) { var filename = path.join(__dirname, 'index.html');
…配置为忽略请求中的所有内容,并始终返回的内容index.html。
因此,当浏览器请求时,/assets/bundle.js它会被给出index.html(并出现错误,因为那不是JavaScript)。
/assets/bundle.js
您需要注意路径,并使用适当的内容类型提供适当的内容。
最好通过为Node 找到一个静态文件服务模块(Google将Node- static设置为Node -static)(或用Lighttpd或Apache HTTPD之类的替换Node)来最好地做到这一点。
如果您希望同时提供动态内容和静态内容,那么Express是一个流行的选择(并且支持静态文件)。