【问题标题】:Webpack does not load/resolve dependencies of npm package included through gitWebpack 不加载/解析通过 git 包含的 npm 包的依赖项
【发布时间】:2016-07-13 19:09:54
【问题描述】:

我刚开始使用gulp-starter。我从 GIT 存储库中包含了一个私有 npm 包(名为“Pigeon”),但在让一切顺利运行时遇到了问题。包的安装很顺利,所有文件都在node_modules 中,包括它的所有依赖项。

myApp/node_modules/pigeon/index.js:

export MyModule from './my-module.js';

myApp/src/app.js:

import ClientPigeoneer from 'pigeon';

Webpack 加载器:

  var webpackConfig = {
    context: 'myApp/src/scripts',
    plugins: [],
    resolve: {
      root: 'myApp/src/scripts',
      extensions: ['', '.js', '.json']
    },
    module: {
      loaders: [
        {
          test: /\.js$/,
          loader: 'babel-loader',
          exclude: /node_modules/,
          query: ["es2015", "stage-1"]
        }
      ]
    }
  }

控制台输出:

ERROR in ./~/pigeon/index.js
Module parse failed: /Users/mirague/Projects/myApp/node_modules/pigeon/index.js Line 1: Unexpected token
You may need an appropriate loader to handle this file type.
| export MyModule from './my-module';
|
 @ ./src/scripts/app.js 9:14-31

如何让 Webpack 解析这个包?我需要添加另一个加载器吗?

【问题讨论】:

    标签: node.js npm gulp webpack


    【解决方案1】:

    请考虑使用此代码来解决您的问题:

    resolve: {
        modulesDirectories: ['node_modules', 'myApp/src/scripts'],
        fallback: path.join(__dirname, 'node_modules'),
        extensions: ['', '.js', '.json']
    },
    

    这样,webpack 就会知道在你的节点模块目录中查找已安装的模块。

    【讨论】:

    • 它已经可以找到所有其他依赖项的方式,并且它似乎知道pigeon 的位置,因为它试图加载index.js。但是,由于某种原因,它不知道如何处理此文件……我尝试了您的方法,结果相同。
    • 可能是因为index.js 使用es6 语法,而babel-loader 被告知排除node_modules 中的所有内容。
    • mm 那可能是。尝试包括鸽子应用程序。虽然这很奇怪,但如果你将它包含在你的应用程序中,它无论如何都应该通过 babel 加载器。
    • 当使用旧的 module.exports 时,它似乎部分解决了,现在我遇到了这些警告和错误:gist.github.com/mirague/f99c7c183860d5c6348c8a31c4d4ceaa
    猜你喜欢
    • 2017-12-17
    • 2019-04-22
    • 1970-01-01
    • 2017-02-01
    • 1970-01-01
    • 2023-03-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多