【问题标题】:Requiring a package is causing an error需要一个包导致错误
【发布时间】:2018-02-19 13:12:32
【问题描述】:

每次我捆绑脚本时,都会出现以下错误:

ERROR in ./resources/assets/scripts/main.js
Module not found: Error: Can't resolve 'datatables.net-colreorder-bs4' in '/home/vagrant/sites/laravel/resources/assets/scripts'
 @ ./resources/assets/scripts/main.js 12:23-63

我的 webpack 配置 js:

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

module.exports = {
    entry:  './resources/assets/scripts/main.js',
    output: {
        path: path.resolve(__dirname, './public/js'),
        filename: 'mainBundle.js'
    },
    module: {
        loaders: [
            {
                test: /\.js$/,
                exclude: /node_modules/,
                loader: 'babel-loader',
                query: {
                    presets: ['env']
                }
            }
        ]
    },
    stats: {
        colors: true
    },
    node: {
        fs: 'empty'
    },
    devtool: 'source-map'
};

我的主 js 文件看起来像这样(没有其他模块导致任何问题)。

var jszip = require('jszip');
var pdfmake = require('pdfmake');
var netBs4 = require('datatables.net-bs4')();
var netButtonsBs4 = require('datatables.net-buttons-bs4')();
var buttonsHtml5 = require('datatables.net-buttons/js/buttons.html5.js')();
var buttonsPrint = require('datatables.net-buttons/js/buttons.print.js')();
var netColreorderBs4 = require('datatables.net-colreorder-bs4')();
var netReponsiveBs4 = require('datatables.net-responsive-bs4')();

我检查了路径,没有问题,我也将路径更改为绝对路径,但没有任何效果。

包json:

"dependencies": {
        "add": "^2.0.6",
        "babel-core": "^6.26.0",
        "babel-loader": "^7.1.2",
        "chart.js": "^2.7.1",
        "datatables.net-bs4": "^1.10.16",
        "datatables.net-buttons-bs4": "^1.5.1",
        "datatables.net-colreorder-bs4": "^1.4.1",
        "datatables.net-responsive-bs4": "^2.2.1",
        "gulp-changed": "^3.2.0",
        "gulp-debug": "^3.2.0",
        "jquery": "^3.2.1",
        "jquery-ui": "^1.12.1",
        "jszip": "^3.1.5",

这个问题仍然没有解决,由于某种原因,使用 npm 时找不到'datatables.net-colreorder-bs4'...我决定将其加载为准备使用的捆绑包而不是 webpacking...

【问题讨论】:

  • 你是用 npm 安装的吗? package.json 是什么?如果你做了npm install -S jszip pdfmake ...,它应该可以工作,或者如果你在 package.json 中有它们,你可以 npm install。
  • 我确实是用 npm 安装的

标签: javascript webpack


【解决方案1】:

唯一可能缺少的是resolve,但我不确定 webpack 是否默认在 node_modules 中查找:

module.exports = {
  entry:  './resources/assets/scripts/main.js',
  output: {
      path: path.resolve(__dirname, './public/js'),
      filename: 'mainBundle.js'
  },
  resolve: {
    modules: [
      resolve("./node_modules/")
    ]
  },

如果是这样的话会很奇怪,因为找到了其他模块。

【讨论】:

    【解决方案2】:

    要在客户端模式下使用pdfmake,你需要直接使用构建版本:

    window.pdfMake = require('pdfmake/build/pdfmake.js');
    var vfs = require('pdfmake/build/vfs_fonts.js');
    window.pdfMake.vfs = vfs.pdfMake.vfs;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-03-28
      • 2023-03-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-03-25
      • 2012-04-22
      相关资源
      最近更新 更多