在另一个构造函数中使用导入的类

问题描述:

ES6语法入门,为什么Main中的MesageTester.Create("bar");失败?在另一个构造函数中使用导入的类

,我有以下的的src/app.js(这也是进入的WebPack):

import {MessageTester} from './helpers/MessageTester'; 

class Main { 
    constructor() { 
     //does run 
     console.log("trying.."); 

     //causes crash "Uncaught ReferenceError: MesageTester is not defined" 
     MesageTester.Create("bar"); 
    } 
} 

//is fine 
MessageTester.Create("foo"); 

//for testing 
new Main(); 

在另一个文件中,的src /助理/ MessageTester.js,我有这样的:

class MessageTester { 
    constructor(msg) { 
     document.querySelector('#root').innerHTML = `<p>` + msg + `</p>`; 
    } 

    static Create(msg) { 
     return new MessageTester(msg); 
    } 
} 

export {MessageTester}; 

正如在评论中指出,主要的外MessageTester.Create()作品,主要的构造函数运行。

如果它是相关的,这里是我的WebPack配置(作为aside-我不知道,如果源地图的正常工作......可能与该bug在这里,但不知道):

// webpack.config.js 
const webpack = require('webpack') 
const path = require('path') 
const HtmlWebpackPlugin = require('html-webpack-plugin'); 
const CopyWebpackPlugin = require('copy-webpack-plugin'); 

const config = { 
    context: path.resolve(__dirname, 'src'), 
    entry: { 
     jistudio: './app.js' 
    }, 
    output: { 
     path: path.resolve(__dirname, 'dist'), 
     filename: '[name].bundle.js', 
     sourceMapFilename: '[name].map', 
     chunkFilename: '[id].chunk.js' 
    }, 
    module: { 
     rules: [{ 
      test: /\.js$/, 
      include: path.resolve(__dirname, 'src'), 
      use: [{ 
       loader: 'babel-loader', 
       options: { 
        presets: [ 
         ['es2015', {modules: false}] 
        ] 
       } 
      }] 
     }] 
    }, 
    devtool: 'eval-source-map', 
    plugins: [ 
     new HtmlWebpackPlugin({ 
      template: './index.html', 
      chunksSortMode: 'dependency' 
     }), 
     new CopyWebpackPlugin([ 
      { 
       from: path.resolve(__dirname, 'assets'), 
      } 
     ]), 
     new webpack.optimize.UglifyJsPlugin({sourceMap: true}) 
    ], 
    devServer: { 
     contentBase: path.join(__dirname, "dist"), 
     compress: true, 
     port: 3000 
    } 
} 

module.exports = config 

Missing s

MessageTester.Create("bar"); 
+0

大声笑...谢谢!有趣的是,我很确定它是在webpack配置中的东西,因为我几乎复制/粘贴,所以它让我怀疑自己;) 非常感谢! – davidkomer