Javascript 在没有索引的datatables扩展中查找索引的网页包
我试图做的是使用数据表。我得到一个错误:Javascript 在没有索引的datatables扩展中查找索引的网页包,javascript,node.js,webpack,datatables,Javascript,Node.js,Webpack,Datatables,我试图做的是使用数据表。我得到一个错误: ERROR in ./index.js Module not found: Error: Can't resolve 'datatables.net-dt' in path/src 当我尝试对数据表进行网页打包时,所有数据表都需要。我使用-display错误详细信息运行了webpack,发现问题在于它正在datatable目录中查找某种索引文件。e、 g Field 'browser' doesn't contain a valid alias con
ERROR in ./index.js
Module not found: Error: Can't resolve 'datatables.net-dt' in path/src
当我尝试对数据表进行网页打包时,所有数据表都需要。我使用-display错误详细信息运行了webpack,发现问题在于它正在datatable目录中查找某种索引文件。e、 g
Field 'browser' doesn't contain a valid alias configuration
path/node_modules/datatables.net-colreorder-dt/index doesn't exist
.js
Field 'browser' doesn't contain a valid alias configuration
path/node_modules/datatables.net-colreorder-dt/index.js doesn't exist
.json
Field 'browser' doesn't contain a valid alias configuration
path/node_modules/datatables.net-colreorder-dt/index.json doesn't exist
我不明白它为什么要找索引。我已经遵循了我能在webpack和datatables上找到的所有文档,根据datatables下载部分,我应该只需要添加我已经完成的包,并添加require的部分,它应该可以工作
我已经查看了数据表及其扩展的repo,其中任何一个都没有索引。我已经用谷歌搜索了所有可能的方法,但找不到任何答案,所以我希望这里的人能有一个想法,因为我尝试了许多不同的方法,这些方法要么不起作用,要么产生了更多的错误
这是我的index.js
require('./index.html');
var AWS = require('aws-sdk');
require( 'datatables.net-dt' )();
require( 'datatables.net-buttons-dt' )();
require( 'datatables.net-buttons/js/buttons.print.js' )();
require( 'datatables.net-colreorder-dt' )();
require( 'datatables.net-fixedheader-dt' )();
require( 'datatables.net-rowgroup-dt' )();
在requires运行之后没有代码,所以我没有包含它
这是我的package.json
{
"name": "TestCode",
"version": "1.0.0",
"description": "Test",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"build": "webpack"
},
"keywords": [],
"author": " ",
"license": "ISC",
"dependencies": {
"aws-sdk": "^2.116.0",
"datatables.net-buttons-dt": "^1.4.2",
"datatables.net-colreorder-dt": "^1.4.1",
"datatables.net-dt": "^1.10.16",
"datatables.net-fixedheader-dt": "^3.1.3",
"datatables.net-rowgroup-dt": "^1.0.2",
"jquery": "^3.2.1",
"raw-loader": "^0.5.1"
},
"devDependencies": {
"html-webpack-plugin": "^2.30.1",
"json-loader": "^0.5.7",
"webpack": "^3.6.0",
"webpack-dev-server": "^2.9.1"
},
}
这是我的webpack.config.js
const path = require('path');
const webpack = require('webpack');
const HtmlWebpackPlugin = require('html-webpack-plugin');
module.exports = {
devtool: 'cheap-module-eval-source-map',
context: path.resolve(__dirname, 'src'),
entry: './index.js',
output: {
filename: 'bundle.js',
path: path.resolve(__dirname, 'dist')
},
devServer: {
contentBase: path.resolve(__dirname, 'src')
},
module: {
loaders: [
{
test: /\.json$/,
loaders: ['json']
},
{
test: /\.html$/,
loader: ['raw-loader']
}
]
},
resolveLoader: {
moduleExtensions: ['-loader']
},
plugins: [
new webpack.HotModuleReplacementPlugin(),
new HtmlWebpackPlugin({
template: './index.html'
})
]
};
首先,您的require语句不需要在末尾添加额外的内容。需要“模块”;很好 其次,您有一个扩展名为.js的语句。它不应该存在,因为您需要的是模块,而不是文件 最后,解决问题的方法是:webpack.config.js中缺少一个resolve字段。当您不使用resolve字段时,所有require语句都在指定的上下文文件夹中查找模块,在您的情况下,源src文件夹在未定义时默认为root文件夹 要解决此问题,请在webpack.config.js中添加以下内容: 或者无论您的节点模块位于何处 webpack查找索引的原因是它是默认的。它找不到您引用的模块,因此正在查找索引文件。在同一个导入中出现多个错误的原因是它正在查找多个扩展 扩展默认为扩展:[.js、.json]。这就是为什么在错误日志中会看到.js和.json。顺便说一句,这也是为什么您可以在require语句中省略扩展
如果您需要了解webpack的更多帮助,请随时询问,或者查看有关解析选项的文档,了解您可以解析模块的更多内容。因此,我添加了一点配置,但它不起作用,因此我阅读了您链接并添加的文档:mainFiles:['package.json']这似乎是可行的,但现在我发现AWS SDK存在一个奇怪的问题,即未捕获的TypeError:util.crypto.lib.createHash不是SDK使用的实用程序库上的函数。如果你认为这是一个不相关的问题,我会将此标记为答案。我很确定我的修复没有实现任何效果,如果我删除数据表的requires和main文件,aws的东西就可以正常工作。啊,我的错。我应该检查一下你到底想要什么。事实是,datatables.net-dt是一个只包含样式的包,只包含css。Webpack不知道如何处理这些文件,因为它们不包含主文件或index.js。您可以通过分别要求主库和样式来解决问题:要求'datatables.net';需要'datatables.netdt/css/jquery.datatables.css'等等。那么我需要添加某种类型的css加载器吗?在他们的下载页面上,它显示了它的用途,我不明白为什么我这样做会如此错误,我肯定会有很多其他人以这种方式使用它?是的,你需要添加一个css加载器。使用npm install命令安装加载程序,并在模块{rules[{…}]}配置中使用{test:/\.css$/,loader:'style loader!css loader'}来使用它们。
resolve: {
modules: [
path.resolve('./node_modules')
]
}