如何使用webpack在npm包子文件夹中导入模块?

glu*_*ued 23 npm webpack babeljs

让我们说一个node_modules名为foo 的包,我想在库中导入一个模块,比如foo/module通过webpack和babel ......

import Foo from 'foo'; 作品

import SomeOtherModule from 'foo/module'; 失败的以下内容:

找不到模块:错误:无法解析/ Users/x/Desktop/someproject/js中的模块'foo/module'

这使得看起来像webpack在错误的地方寻找文件而不是 node_modules

我的webpack.config看起来像这样:

var webpack = require('webpack');
var path = require('path');

module.exports = {
    entry: ['babel-polyfill','./js/script.js'],
    output: {
        path: __dirname,
        filename: './build/script.js'
    },
    module: {
        loaders: [
            {
                test: /\.js$/,
                loader: 'babel',
                query: {
                    cacheDirectory: true,
                    presets: ['es2015']
                }
            }
        ],
    },
    plugins: [
        new webpack.NoErrorsPlugin()
    ],
    stats: {
        colors: true
    },
    devtool: 'source-map'

};
Run Code Online (Sandbox Code Playgroud)

Dmi*_*nko 17

它应该合作import 'foo/module';.这既解决了文件./node_modules/foo/module.js./node_modules/foo/module/index.js类似./node_modules/foo/node_modules/module/index.js,如果它预期(在这种情况下,你最好通过NPM安装模块).

  • 哦,你是对的,模块 foo 有一个文件夹 `src`,所以 `import from foo/src/module` 工作,谢谢 (3认同)
  • 模块的结构是`./node_modules/foo/module/index.js`,它没有解析 (2认同)
  • 我检查了测试项目并且它起作用了,当我将 ./node_modules/foo/module/index.js 重命名为 ./node_modules/foo/module/index1.js 时,运行 webpack,它说“无法解析模块 'foo/module'在 /home/user/www/so-2/js 中”。那么,也许你的文件名有错别字? (2认同)