gpt4 book ai didi

javascript - 如何使用 webpack 在 Angular 应用程序中动态加载 Assets (pdf)?

转载 作者:行者123 更新时间:2023-11-30 20:57:14 25 4
gpt4 key购买 nike

我正在尝试将 pdf 加载到我在 webpack dev server 上运行的 Angular 应用程序中使用 HTML <object>data 标记属性。

由于pdf路径是在运行时生成的,并且是absolute喜欢C:\test.pdf .

它没有加载到 UI 中,而是 console记录错误 -

Not allowed to load local resource: file:///C:/test.jpeg

但是,应用程序的生产构建不在托管服务器上运行,而是作为静态 html 运行正常。此外,相对路径也可以正常工作。

如何加载 pdf 文件?

webpack.common.js

var webpack = require('webpack');
var HtmlWebpackPlugin = require('html-webpack-plugin');
var ExtractTextPlugin = require('extract-text-webpack-plugin');

const path = require('path');
const rootDir = path.resolve(__dirname, '..');

module.exports = {
resolve: {
extensions: ['.js', '.ts'],
modules: [rootDir, path.join(rootDir, "node_modules")]
},

module: {
rules: [
{
test: /\.html$/,
loader: 'html-loader'
},
{
test: /\.(png|jpe?g|gif|svg|woff|woff2|ttf|eot|ico)$/,
loader: 'file-loader?name=assets/[name].[ext]'
},
{
test: /\.(scss|css)$/,
use: [
{ loader: "style-loader" },
{ loader: "css-loader" },
{ loader: "sass-loader",
options: {
includePaths: ["node_modules/"]
}
}
]
}
]},
plugins: [
new webpack.optimize.CommonsChunkPlugin({
name: ['app', 'vendor', 'polyfills']
}),
new HtmlWebpackPlugin({
template: 'src/index.html'
}),
new webpack.ContextReplacementPlugin(
/angular(\\|\/)core(\\|\/)@angular/,
path.resolve(__dirname, '../src')
)
]
};

webpack.dev.js

var webpackMerge = require('webpack-merge');
var ExtractTextPlugin = require('extract-text-webpack-plugin');
var commonConfig = require('./webpack.common.js');

const path = require('path');
const rootDir = path.resolve(__dirname, '..');

commonConfig.entry = {
'polyfills': './src/polyfills.ts',
'vendor': './src/vendor.ts',
'app': './src/main.ts'
};

commonConfig.module.rules.unshift({
test: /\.ts$/,
loaders: ['awesome-typescript-loader', 'angular2-template-loader', 'angular-router-loader']
});

module.exports = webpackMerge(commonConfig, {

devtool: 'cheap-module-eval-source-map',

output: {
path: path.resolve(rootDir, 'dist'),
publicPath: 'http://localhost:8080/',
filename: '[name].js',
chunkFilename: '[name].chunk.js'
},

plugins: [
new ExtractTextPlugin('[name].css')
],

devServer: {
historyApiFallback: true,
stats: 'minimal'
}
});

最佳答案

您可以告诉 devServer 从哪里提供文件。

devServer: {
historyApiFallback: true,
stats: 'minimal',
contentBase: ['./dist', 'C:\\']
}

然后你可以用<... src="/file_name.ext" ... />加载你的文件

但我不建议添加 C:\作为 contentBase。如果可能,请为生成的 PDF 定义另一个输出目录。

关于javascript - 如何使用 webpack 在 Angular 应用程序中动态加载 Assets (pdf)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47525724/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com