首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >webpack无法解决node_modules问题

webpack无法解决node_modules问题
EN

Stack Overflow用户
提问于 2020-09-19 00:42:18
回答 1查看 1.1K关注 0票数 0

我正在组建webpack,但我有个问题。我知道,在解析模块中设置node_modules时,库是自动连接的。所以我像这样设置webpack ( webpack文件位于根文件夹中的config文件夹下)。

代码语言:javascript
复制
const path = require('path');
const VueLoaderPlugin = require('vue-loader/lib/plugin');
const MiniCssExtractPlugin = require('mini-css-extract-plugin');

const env = process.env.NODE_ENV;
const isProd = env === "production";

module.exports = {
  mode: env,
  context: path.resolve(__dirname, '..'),
  entry: {
    app: './main.js'
  },
  output: {
    filename: !isProd ? `js/[name].js` : 'js/[name].[contenthash:8].js',
    path: path.resolve(__dirname, '../dist'),
    publicPath: '/',
    chunkFilename: !isProd ? `js/[name].js` : 'js/[name].[contenthash:8].js'
  }, 
  resolve: {
    alias: {
      '@': path.resolve(__dirname, '../src'),
      vue$: 'vue/dist/vue.runtime.esm-bundler.js'
    },
    extensions: [
      '.mjs',
      '.js',
      '.jsx',
      '.vue',
      '.json',
    ],
    modules: [  
      path.resolve(__dirname, '../src'),
      'node_modules',   
      path.resolve(__dirname, '../node_modules')
    ],
  },
  resolveLoader: {  
    modules: [  
      'node_modules',   
      path.resolve(__dirname, '../node_modules')
    ],
    extensions: ['.js', '.json'],
  },
  module: {
    noParse: /^(vue|vue-router|vuex|vuex-router-sync)$/,
    rules: [
      { 
        test: /\.vue$/, 
        use: ['vue-loader']
      },
      {
        test: /\.(png|jpe?g|gif|webp)(\?.*)?$/,
        use: [  
          { 
            loader: 'url-loader',   
            options: {  
              limit: 4096,  
              fallback: {   
                loader: 'file-loader',  
                options: {  
                  name: 'img/[name].[hash:8].[ext]',
                  esModule: false
                }   
              } 
            }   
          } 
        ]
      },
      {
        test: /\.(sa|sc|c)ss$/,
        use: [ isProd ? {
          loader: MiniCssExtractPlugin.loader
        } : {   
          loader: 'style-loader',
        }
        , 
        { 
          loader: "css-loader", 
          options: {    
            sourceMap: false,   
            importLoaders: 2    
          }
        }, 
        {
          loader: "sass-loader", 
          options: {    
            sourceMap: false    
          }
        }],
      },
      {
        enforce: 'pre',
        test: /\.(vue|(j|t)sx?)$/,
        exclude: [
          /node_modules/,
        ],
        use: [
          {
            loader: 'eslint-loader',
            options: {
              extensions: [
                '.js',
                '.jsx',
                '.vue'
              ],
              emitWarning: false,
              emitError: false,
              fix: true,
            }
          }
        ]
      },
      {
        test: /\.m?jsx?$/,
        use: [
          {loader: 'babel-loader'}
        ]
        
      }
    ],
  },
  plugins: [
    new VueLoaderPlugin(),  
  ],
}

但是,尽管存在此设置,代码仍无法找到node_modules。

代码语言:javascript
复制
import Vue from 'vue';
import App from "./src/App.vue";
import { router } from "./src/router/index.js";

new Vue({
  router,
  render: (h) => h(App),
}).$mount("#root");

这将在dev服务器上或在构建时输出错误消息。

找不到./main.js模块中的错误:'/Users/donghokim/study/wecode/vue-setting-playground/brandi-front-setting‘@ ./main.js 1:0-22 5:4-7中的错误:无法解析“vue”

但是,如果直接设置库路径,它就能工作。

代码语言:javascript
复制
import Vue from './node_modules/vue/dist/vue';
import App from "./src/App.vue";
import { router } from "./src/router/index.js";

new Vue({
  router,
  render: (h) => h(App),
}).$mount("#root");

如何自动连接node_modules?

EN

回答 1

Stack Overflow用户

发布于 2020-09-20 05:10:57

解决了..。vue$:' vue /dist/ vue.runtime.esm-bundler.js‘是vue 3,我发现vue 2没有vue.runtime.esm-bundler.js文件。改为vue.runtime.esm.js后,webpack建厂

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63964244

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档