javascript - 使用 webpack 时无法使用 routeprovider 加载模板

标签 javascript angularjs webpack

我最近从 grunt 迁移到 webpack,但我不知道如何要求/导入我的模板。我看过几个类似的 issues没有运气。

这是我的 webpack.config 文件:

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

    var HtmlWebpackPlugin = require('html-webpack-plugin');
    var ExtractTextPlugin = require('extract-text-webpack-plugin');
    var CleanWebpackPlugin = require('clean-webpack-plugin');
    var AssetsPlugin = require('assets-webpack-plugin');


    var ExtractTextPlugin = require('extract-text-webpack-plugin');
    module.exports = {
        entry: {
            app: globby.sync(['./app/app.js','./app/app.run.js', './app/app.config.js', './app/**/*.js']),
            styles: globby.sync(['./content/styles/*.css']),
            images: globby.sync(['./content/images/*.*']),
            vendor: [
           // removed to save space
            ]
        },
        output: {
            filename: './scripts/[name].bundle.js',
            path: path.join(__dirname, "public")
        },
        devServer: {
            port: 1384,
            contentBase: './public/'
        },

        // Enable sourcemaps for debugging webpack's output.
        devtool: 'source-map',

        module: {
            rules: [
                {   test: /\.less$/, 
                    loader: "less-loader",
                    include: path.resolve(__dirname, "content", "styles", "less")
                },
                {
                    test: /\.html$/,
                    use: [
                        {
                            loader: 'ngtemplate-loader',
                            options: {
                                angular: true,
                            },
                        },
                        {
                            loader: 'raw-loader',
                        },
                        {
                            loader: 'html-loader'
                        },
                        {
                            loader: "ngtemplate!html?module=myTemplates&relativeTo=" + 
                            (path.resolve(__dirname, './app/**'))
                        },
                    ],
                    /*
                    exclude: [/node_modules/]
                    */
                },
                {
                    test: /\.css$/,
                    loader: ExtractTextPlugin.extract({ fallback: 'style-loader', use: 'css-loader' }),
                },
                {
                    test: /\.(ico)$/,
                    loader: "url-loader?name=./[name].[ext]",
                    include: path.resolve(__dirname, "content", "images")
                },
                {
                    test: /\.(jpg|jpeg|gif|png|tiff|svg)$/,
                    loader: "file-loader?name=./images/[name].[ext]",
                    include: path.resolve(__dirname, "content", "images")
                },
                {
                    test: /\.woff(2)?(\?v=[0-9]\.[0-9]\.[0-9])?$/,
                    loader: 'url-loader?minetype=application/font-woff&name=./fonts/[name].[ext]'
                },
                {
                    test: /\.(ttf|eot|svg)(\?v=[0-9]\.[0-9]\.[0-9])?$/,
                    loader: 'file-loader?name=./fonts/[name].[ext]'
                },
                {
                    test: require.resolve('adal-angular/lib/adal'),
                    loader: 'expose-loader?AuthenticationContext'
                },
                {
                    test: /\.js$/,
                    enforce: "pre",
                    loader: 'source-map-loader'
                }
            ],
        },

        plugins: [
            new webpack.DefinePlugin({
                ADMIN_API_URL: JSON.stringify('http://localhost:41118/api/'),
                API_URL: JSON.stringify('http://localhost:32605/api/'),
                GLOBAL_ADMIN_URL: JSON.stringify('https://adminapi.tradesolution.no/')
            }),
            new HtmlWebpackPlugin({
                template: './app/layout.ejs',
                filename: 'index.html'
            }),
            new webpack.optimize.CommonsChunkPlugin({ name: 'vendor', filename: './scripts/vendor.bundle.js' }),
            new ExtractTextPlugin({ filename: './styles/[name].bundle.css' }),
            /*new CleanWebpackPlugin(['public'], {
                verbose: false
            }),
            */
            new AssetsPlugin({
                filename: 'webpack.assets.json',
                path: './public/scripts',
                prettyPrint: true
            }),
            new webpack.ProvidePlugin({
                $: 'jquery',
                jQuery: 'jquery',
                'window.jQuery': 'jquery',
                'window.$': 'jquery',
                "window.AuthenticationContext": "AuthenticationContext",
                _: 'underscore'
            }),
        ],
        externals: [
            { xmlhttprequest: '{XMLHttpRequest:XMLHttpRequest}' }
        ],


    }

公共(public)文件夹使用 .js、样式、图像等按应有的方式构建。但是简单的导航会导致此错误:

ERROR in ./app/app.config.js
Module not found: Error: Can't resolve 'app/varegruppe/templates/index.html' in 'C:\Users\oystein\work\EPD.SPA\EpdSPA\app'
 @ ./app/app.config.js 50:25-71

这是一个如何定义路由的例子:

  $routeProvider.when('/produkteier', {
            templateUrl: require('app/produkteier/templates/view.html')
        })

最佳答案

使用这个 plugin我设法使用以下配置将所有 html 文件复制到公共(public)目录中:

var CopyWebpackPlugin = require('copy-webpack-plugin');
new CopyWebpackPlugin([
            {from: './app/**/*.html', to: './'}
        ])

关于javascript - 使用 webpack 时无法使用 routeprovider 加载模板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47036566/

相关文章:

javascript - 将多个 Prop 传递给 React 组件

AngularJS Accordion 全部展开 全部折叠

angularjs - 如果我不需要范围,可以替代 ng-repeat

javascript - AngularJS 许多 Controller ng 设计 Material

javascript - webpack style-loader - 在 React 组件上导入不同的样式而不覆盖

webpack - react 生产构建 : Cannot read property 'listenBeforeLeavingRoute' of undefined

css - Webpack - postcss-import 无法使用 VueJs 找到 CSS 文件

javascript - 如何在没有 id 的情况下在另一个元素中查找元素

javascript selenium webdriver 不是全尺寸

javascript - 选择不同的选项卡时,如何使 CSS Accordion 折叠?