代码之家  ›  专栏  ›  技术社区  ›  Sphyxxy

Chrome开发工具中没有显示静态资源

  •  0
  • Sphyxxy  · 技术社区  · 9 年前

    使用一个简单的react+webpack应用程序,但我在调试时遇到了问题,因为静态资源似乎没有加载到开发工具中(我也不知道为什么断点不起作用!)

    在我的webpack.config中获得了以下内容。js文件:

    var ExtractTextPlugin = require('extract-text-webpack-plugin');
    
    const webpack = require('webpack');
    const path = require('path');
    
    module.exports = {
      devtool: 'eval-source-map',
      entry: path.join(__dirname, 'src', 'app.js'),
      output: {
        path: path.join(__dirname, 'dist'),
        filename: 'bundle.js'
      },
      module: {
        loaders: [
          {
            test: path.join(__dirname, 'src'),
            loader: ['babel-loader'],
            query: {
              cacheDirectory: 'babel_cache',
              presets: ['react', 'es2015']
            }
          },
          {
            test: /\.css/,
            loader: ExtractTextPlugin.extract("style-loader", "css-loader")
          },
          {
            test: /\.(eot|svg|ttf|woff|woff2)$/,
            loader: 'file-loader'
          }
        ]
      },
      plugins: [
        new webpack.DefinePlugin({
          'process.env.NODE_ENV': JSON.stringify(process.env.NODE_ENV)
        }),
        new webpack.optimize.DedupePlugin(),
        new webpack.optimize.OccurenceOrderPlugin(),
        new webpack.optimize.UglifyJsPlugin({
          compress: { warnings: false },
          mangle: true,
          sourcemap: false,
          beautify: false,
          dead_code: true
        }),
        new ExtractTextPlugin("styles.css")
      ]
    };
    

    我的express应用程序提供/dist文件夹:

    app.use('/static', Express.static(path.join(__dirname, '..', 'dist')));
    

    但是,当我尝试查看源代码(使用sourcemap)时,我的开发工具仅显示以下内容:

    dev tools

    当我导航到localhost:3000/static/bundle时。js和localhost:3000/static/bundle.js。映射它以明文显示文件。我的应用程序也“工作”(即JS正在使用),但它似乎没有在Chrome中显示。我是不是错过了一些很明显的东西?

    谢谢你的帮助!

    1 回复  |  直到 9 年前
        1
  •  0
  •   Sphyxxy    9 年前

    所以找到了一种方法来做这件事,以防你将来读到这篇文章。

    我的问题是我在使用索引。显示标记的ejs:

    index.ejs

    <!DOCTYPE html>
    <html>
      <head>
        <meta charset="utf-8" />
        <title>Title</title>
        <link rel="stylesheet" href="styles.css">
      </head>
      <body>
        <div id="main"><%- markup -%></div>
      </body>
    </html>
    

    server.js

    return res.render('index', { markup });
    

    我不包括在内 dist/bundle.js 在我的.ejs文件中,这意味着Chrome工具无法获取它。我补充道 <script src="static/bundle.js"></script> 到我的索引。ejs(即使不是代码工作所必需的!)它最终开始出现在chrome开发工具中。

    现在,我终于可以在代码和调试中设置断点,并在“源”选项卡中打开我的.js文件,所以一切看起来都很正常。

    我很想知道是否有另一种方法可以做到这一点,一种不涉及不必要地获取捆绑包的方法。html中的js脚本。