Webpack require()无法解析' file'或者'目录'

时间:2016-03-25 09:22:09

标签: node.js webpack

愚蠢的问题或许......我正在使用Webpack构建应用程序(在Ubuntu上),并且我试图要求另一个的JS文件。我的应用程序看起来像这样:

myapp/
  src/
    vendor/
      facebook.js
    components/
      layout/
        header/
          FacebookButtonComponent.js

我的Webpack配置中包含以下内容:

const path = require('path');
const srcPath = path.join(__dirname, '/src');
resolve: {
  extensions: [
    '',
    '.js',
    '.jsx'
  ],
  alias: {
    components: `${ srcPath }/components`,
    vendor: `${ srcPath }/vendor`
  }
}

然后在FacebookComponent.js我需要facebook.js

require('vendor/facebook.js');

但是我收到以下错误:

   ./src/components/layout/header/FacebookButtonComponent.js中的错误   找不到模块:错误:无法解析' file'或者'目录' /myapp/src/vendor/facebook.js / myapp / src / components / layout / header

也许我以错误的方式解决这个问题,但似乎正在建立正确的道路。 如果这不正确,我应该如何格式化我的路径?

我还试过./,它给出了:

   ./src/components/layout/header/FacebookButtonComponent.js中的错误   找不到模块:错误:无法解析' file'或者'目录' myapp / src / components / layout / header中的./vendor/facebook.js

../建立相对路径,似乎没有效果:

   ./src/components/layout/header/FacebookButtonComponent.js中的错误   找不到模块:错误:无法解析' file'或者'目录' ../vendor/facebook.js在myapp / src / components / layout / header

This question似乎有些相关,但似乎没有任何建议可行(例如设置root。)

3 个答案:

答案 0 :(得分:1)

您可以定义resolve.modulesDirectories而不是alias

resolve: {
  extensions: [
    '',
    '.js',
    '.jsx'
  ],
  modulesDirectories: [
    "node_modules",
    "src"
  ]
}

并且现在需要文件:

require('vendor/facebook.js');

答案 1 :(得分:0)

在您的文件树中

  

FacebookComponent.js

你的错误说

  

按钮 Component.js

答案 2 :(得分:0)

只需阅读错误,我认为require('../../../vendor/facebook.js')应该有效。

require('vendor/facebook.js');

   ./src/components/layout/header/FacebookButtonComponent.js中的错误找不到模块:错误:无法解析'文件'或者'目录' /myapp/src/vendor/facebook.js / myapp / src / components / layout / header也许我正在进行

=>试图解决/myapp/src/components/layout/header/myapp/src/vendor/facebook.js

require('./vendor/facebook.js');

   ./src/components/layout/header/FacebookButtonComponent.js中的错误找不到模块:错误:无法解析'文件'或者'目录' myapp / src / components / layout / header中的./vendor/facebook.js

=>试图解决/myapp/src/components/layout/header/vendor/facebook.js

require('../vendor/facebook.js');

   ./src/components/layout/header/FacebookButtonComponent.js中的错误找不到模块:错误:无法解析'文件'或者'目录' ../vendor/facebook.js在myapp / src / components / layout / header

=>试图解决myapp / src / components / layout / vendor / facebbok.js