Pixi.js: Webpack - 未捕获的类型错误: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 ,它在某些函数中显示Uncaught TypeError: fs.readFileSync is not a function ,如BlurFilter

此外 ,

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 一无所知。 您需要有一个转换,将 readFileSyncs 解析为文件的实际字符串,就像 browserify 转换所做的那样。

这是我的工作 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-friendly”转换,或者在我们的包 json 中包含必要的配置,这样你就不必编写它(就像我们为 browserify 所做的那样)。 但是说它不适用于开箱即用的流行构建器是完全不正确的,webpack 是唯一需要一些配置才能工作的工具。

@supermrji它不能用 webpack 开箱即用。

不明白,这个问题最后是怎么解决的? 尝试在反应应用程序中使用肥皂时遇到同样的问题。

@aasten我对soap 和VUE-CLI 也有同样的问题……你解决了吗?

@Crawler158不,抱歉。

没有?

由于关闭后没有任何近期活动,因此该线程已自动锁定。 请为相关错误打开一个新问题。

此页面是否有帮助?
0 / 5 - 0 等级

相关问题

gigamesh picture gigamesh  ·  3评论

Makio64 picture Makio64  ·  3评论

readygosports picture readygosports  ·  3评论

YuryKuvetski picture YuryKuvetski  ·  3评论

SebastienFPRousseau picture SebastienFPRousseau  ·  3评论