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

Webpack4-找不到JSON模块

  •  0
  • laptou  · 技术社区  · 6 年前

    我的webpack应用程序中有一些json文件需要导入。他们的名字如 0.json , 1.json , 2.json ,等等,在目录中 src/res/level/ . 当我试图 require() 在我的代码中,它不起作用:

    private loadWorld() {
    
        // load the level
        // duplicate the object to avoid modifying the actual instance
        // that json-loader created
        this.state.level = JSON.parse(JSON.stringify(require(`@res/level/${this.level}.json`))) as LevelData;
    
        // ...
    
    }
    

    我的方法中的此行始终引发错误:

    Error: Cannot find module "@res/level/1.json".
        at webpackContextResolve (webpack-internal:///9:16:11)
        at webpackContext (webpack-internal:///9:9:11)
    

    然而,我不明白为什么。如果我在观看模式下运行Webpack,并编辑这一行,会使事情变得更加混乱。 之前 我的程序试图运行它,然后JSON文件突然被正确加载。

    我已经为配置了别名 @res 正确:

    resolve: {
        extensions: [".ts", ".js", ".glsl", ".json"],
        alias: {
            "@res": path.join(__dirname, "src/res"),
            "@lib": path.join(__dirname, "src/lib"),
            "@shader": path.join(__dirname, "src/shader"),
            "@control": path.join(__dirname, "src/control"),
            "@scene": path.join(__dirname, "src/scene"),
            "@util": path.join(__dirname, "src/util"),
        }
    }
    

    因为这是Webpack4,所以我没有包含JSON的加载程序。 那么为什么这不起作用呢?

    另外,我注意到当我检查生成的代码时,我看到了: enter image description here

    这表明JSON文件正在被加载,但不在我期望的目录下。

    1 回复  |  直到 6 年前
        1
  •  0
  •   laptou    6 年前

    当我使用字符串串联而不是模板字符串时,编译器开始一致地加载JSON文件:

    this.state.level = JSON.parse(JSON.stringify(require("@res/level/" + this.level.toString() + ".json"))) as LevelData;