为什么使用我的配置无法正确解析别名?

时间:2017-02-20 13:47:16

标签: javascript webpack webpack-2

我的webpack配置中有以下resolve选项:

resolve: {
    modules: ["./app/static/js/homepage/", "./app/static/js/dashboard/",],
    extensions: [".js", ],
    alias: {
        "bootstrap": "../../bower_components/bootstrap/dist/js/bootstrap",
        "lodash": "../../bower_components/lodash/lodash",
    // ...

但是我收到了这个错误:

ERROR in ./app/static/js/dashboard/main.js
Module not found: Error: Can't resolve 'underscore' in '/app/app/static/js/dashboard'
 @ ./app/static/js/dashboard/main.js 84:0-112:2

这意味着它不会将underscore视为别名,这在我的项目中的所有define都会发生。

1 个答案:

答案 0 :(得分:1)

您将它们别名为相对路径,然后上升两个目录(In [1]: import numpy as np In [2]: A = np.array([1+2j, 2+5j, 3-4j, -3+1j]) In [3]: A.view(float) Out[3]: array([ 1., 2., 2., 5., 3., -4., -3., 1.]) In [4]: np.savetxt("numbers.txt", A.view(float)) In [5]: np.loadtxt("numbers.txt") Out[5]: array([ 1., 2., 2., 5., 3., -4., -3., 1.]) In [6]: np.loadtxt("numbers.txt").view(complex) Out[6]: array([ 1.+2.j, 2.+5.j, 3.-4.j, -3.+1.j]) ),因此当您在../../中导入lodash时,它将尝试在

中找到该模块
./app/static/js/dashboard/main.js

假设您的./app/static/bower_components/lodash/lodash 位于项目的顶层(如建议的那样),您可以通过上升四个目录来修复别名:

bower_components

请注意,只有在深度为四级的文件中导入时才会有效。用绝对路径替换它们无处不在。

更清晰的解决方案是将alias: { "bootstrap": "../../../../bower_components/bootstrap/dist/js/bootstrap", "lodash": "../../../../bower_components/lodash/lodash", } 添加到您的模块中,因此它会查找每个bower_components目录,这是将bower集成到webpack的常用方法。有了它,你可以使用bower_component而不添加任何别名。但是,如果你仍然想要一个别名,你可以按如下方式进行:

import _ from 'lodash/lodash'