Pixi.js: Webpack-キャッチされていないTypeError:fs.​​readFileSyncは関数ではありません

作成日 2015年09月02日  ·  14コメント  ·  ソース: pixijs/pixi.js

Webpack.config.js

node: {
    fs: "empty"
},
module: {
    loaders: [{
        test: /\.json$/,
        include: path.join(__dirname, 'node_modules', 'pixi.js'),
        loader: 'json'
    }, {
        test: /\.js$/,
        exclude: path.join(__dirname, 'node_modules'),
        loader: 'babel'
    }, {
        test: /\.png$|\.jpe?g$|\.gif$|img\/.*\.svg$/,
        loader: 'file?name=' + opts.img
    }],
    noParse: /\.min\.js/
},

ショーUncaught TypeError: fs.readFileSync is not a function

削除した場合

node: {
    fs: "empty"
}

Uncaught Error: Cannot find module "fs"

私のメインスクリプトでmain.js

import PIXI from 'pixi.js'; // use ES6 width Babel   from npm  pixi.js

new PIXI.filters.BlurFilter()使用すると見つかりました

しかし、私が使用している場合はhttps://cdnjs.cloudflare.com/ajax/libs/pixi.js/3.0.7/pixi.min.js"リンクCDN
それはすべて大丈夫です。

Wepackのオプションを設定する必要がありますか?

最も参考になるコメント

この問題が最終的にどのように解決されたか理解できませんか? 反応アプリケーション内から石鹸を使おうとすると同じ問題が発生しました。

全てのコメント14件

#1854の重複?

似ていますが、なぜ設定するのかが問題になります
require('pixi.js')

node: {
    fs: "empty"
}

すべて正常に動作しますが、#1854は好きではありません。 BlurFilterなどの関数でUncaught TypeError: fs.readFileSync is not a functionれます。

加えて 、

loaders: [{
    test: /\.json$/,
    include: path.join(__dirname, 'node_modules', 'pixi.js'),
    loader: 'json'
}

include: path.join(__dirname, 'node_modules', 'pixi.js'),を削除した場合
pixiはまだ動作します。

しかし同じ問題Uncaught TypeError: fs.readFileSync is not a function

webpackについては何も知りません。 browserifyトランスフォームと同様に、readFileSyncsをファイルの実際の文字列に解決するトランスフォームが必要です。

これが私の作業中のwebpack.configです:

var webpack = require("webpack");

var path = require("path");

var config = {
    target: "web",
    debug: true,
    devtool: "source-map",
    entry: {
        main: "./source/scripts/main"
    },
    output: {
        path: "./build",
        filename: "[name].bundle.js",
        chunkFilename: "[id].bundle.js"
    },
    node: {  // this is for pixi.js 
        fs: "empty"
    },
    resolve: {
        modulesDirectories: ['web_modules', 'bower_components', 'node_modules']
    },
    module: {
        loaders: [
            { test: /\.css/, loader: "style-loader!css-loader" },
            { test: /\.less$/, loader: "style-loader!css-loader!less-loader" },
            { test: /\.jsx?$/, exclude: /(node_modules|bower_components)/, loader: 'babel?optional[]=runtime&stage=0'},
            { test: /\.png/, loader: "url-loader?limit=100000&mimetype=image/png" },
            { test: /\.gif/, loader: "url-loader?limit=100000&mimetype=image/gif" },
            { test: /\.jpg/, loader: "file-loader" },
            { test: /\.json/, loader: "json-loader" },
            { test: /\.(png|woff|woff2|eot|ttf|svg)$/, loader: 'url-loader?limit=100000' }
        ]
    },
    plugins: [
        //new webpack.optimize.UglifyJsPlugin(),
        //new webpack.optimize.DedupePlugin(),
        new webpack.DefinePlugin({
            __DEV__: true
        })
    ]
};
module.exports = config;

解決済みとして終了します。

これは、私が見つけたPIXIを使用してwebpackを構成する最も直接的で単純な例です。

https://gist.github.com/mjackson/ecd3914ebee934f4daf4

package.jsonmainフィールドを更新して、 bin内のビルドファイルを参照することをお勧めします。 これは、ほとんどの人がクライアントで使用するライブラリです。 箱から出してすぐに人気のあるビルドツールと相互運用しないのは少し奇妙に思えます。

他の多くの(ほとんど?)人気のあるクライアント側ライブラリは、このような問題を防ぐためにpackage.json内のビルドファイルを参照します。

箱から出してすぐにbrowserifyで動作し、適切な構成のwebpackでも動作します。 Webpack自体は、ビルドされたファイルをポイントするのではなく、ソースをポイントして適切な変換を構成することをお勧めします。

将来的には、より「webpackに適した」変換を使用するか、パッケージjsonに必要な構成を含めて、(browserifyの場合のように)記述する必要がないようにする予定です。 しかし、箱から出してすぐに人気のあるビルダーでは機能しないと言うのはまったく真実ではありません。機能させるために少しの設定が必要なのはwebpackだけです。

@supermrjiwebpackではそのままでは機能しません。

この問題が最終的にどのように解決されたか理解できませんか? 反応アプリケーション内から石鹸を使おうとすると同じ問題が発生しました。

@aasten石鹸とVUE-CLIで同じ問題が発生しました...解決しましたか?

@ Crawler158いいえ、ごめんなさい。

なし?

このスレッドは、閉じられた後、最近のアクティビティがないため、自動的にロックされています。 関連するバグについては、新しい問題を開いてください。

このページは役に立ちましたか?
0 / 5 - 0 評価