2

WebPack を使用して「対決」を含めようとしています。問題は、showdown が require("fs") を実行し、戻り値を確認することです。これにより、WebPack がエラーをスローします。

require("fs") の呼び出しが false を返すように、シムを生成するように Webpack を構成することが可能であるように思われます。

おそらく、これらの手法のいずれかが機能する可能性があります: http://webpack.github.io/docs/shimming-modules.html

これが Showdown.js コードです。node modules ディレクトリ内のこのコードをコメントアウトすると、問題は解決します。ただし、もっと良い方法があるはずです。

//
// Automatic Extension Loading (node only):
//

if (typeof module !== 'undefind' && typeof exports !== 'undefined' && typeof require !== 'undefind') {
    var fs = require('fs');

    if (fs) {
        // Search extensions folder
        var extensions = fs.readdirSync((__dirname || '.')+'/extensions').filter(function(file){
            return ~file.indexOf('.js');
        }).map(function(file){
            return file.replace(/\.js$/, '');
        });
        // Load extensions into Showdown namespace
        Showdown.forEach(extensions, function(ext){
            var name = stdExtName(ext);
            Showdown.extensions[name] = require('./extensions/' + ext);
        });
    }
}
4

4 に答える 4

2

解決策は、マーク付きに切り替えることでした: https://www.npmjs.org/package/marked。モジュールに関する限り、showdown ライブラリには問題があります。

于 2014-09-02T09:02:47.923 に答える
1

この問題は、対決 v >=1.0.0 で修正する必要があります。

于 2015-07-20T23:07:56.347 に答える
0

これは webpack の問題ではなく、Showdown の問題のようです。必要なコードfsは、ノード環境でのみ実行することを目的としています。残念ながら、ノードで実行されているかどうかを確認するコードにいくつかのタイプミスがあります (投稿したコードの最初の if ステートメントではundefindなくundefined)。

まだマージされていないこれを修正するプル リクエストがあります。

正直に言うと、Showdown ライブラリはもう維持されていないようです (最後のコミットは 2012 年 11 月)。

于 2014-09-02T04:46:13.077 に答える