在我的文件夹外找不到本地依赖项的NPM模块

时间:2018-07-22 10:31:52

标签: node.js npm webpack package.json

我有一个看起来像这样的项目:

|-- client
|   |-- index.js
|   |-- ...
|   |-- package.json
|   └-- webpack.config.json
|-- lib
|   └-- myLocalLibrary
|       |-- index.js
|       └-- package.json
└-- server
    └-- ...

通过使用npm导入库,在libclient中都使用了server中的代码

因此client/package.jsonserver/package.json包含:

{
  dependencies: {
    ...
    myLocalLibrary: 'file: ../lib/myLocalLibrary',
    ...
  } 
}

问题是:当我在客户端中运行webpack时,它无法解析myLocalLibrary中使用的导入,原因是:

a)NPM在client/node_modules中而不是lib/myLocalLibrary/node_modules中为本地库安装子依赖项

b)Webpack使用其源文件夹为myLocalLibrary解析了代码,而该代码不在client/node_modules范围内

在这种情况下我该怎么办?

1 个答案:

答案 0 :(得分:0)

如果您将webpack用作构建工具,我认为您必须使用resolve.alias webpack配置。如果我们已经使用webpack将所有文件合并为一个node_modules文件,则在生产环境中不需要entry。 在您的webpack配置中:

module.exports = {
  //...
  resolve: {
    alias: {
      myLocalLibrary: path.resolve(__dirname, 'lib/myLocalLibrary'), // where is the webpack.config.json?
    }
  }
};

https://webpack.js.org/configuration/resolve/