当我尝试用Nestjs后端编译Angular 8应用程序时,webpack似乎对它有问题,并返回__dirname为"/“
我尝试使用其他主题中的建议在配置__dirname中进行设置: true或false,但似乎API不接受此配置。
下面我粘贴了工厂的默认配置和我得到的错误
const webpack = require('webpack');
const WebpackConfigFactory = require('@nestjs/ng-universal')
.WebpackConfigFactory;
module.exports = WebpackConfigFactory.create(webpack, {
// Nest server for SSR
server: './server/main.ts'
});在成功构建之后,当尝试使用'npm run serve:ssr‘进行编译时,我得到了这样的结果:
Unhandled Promise rejection: ENOENT: no such file or directory, open '//indexTemplate.html.tpl' ; Zone: <root> ; Task: Promise.then ; Value: { Error: ENOENT: no such file or directory, open '//indexTemplate.html.tpl' at Object.openSync (fs.js:438:3) at Object.readFileSync (fs.js:343:35) at Object.generateHTML (C:\Users\Work\PhpstormProjects\terminal-app\dist\server.js:80659:16) at Function.setupExpress (C:\Users\Work\PhpstormProjects\terminal-app\dist\server.js:79512:39) at Function.setup (C:\Users\Work\PhpstormProjects\terminal-app\dist\server.js:79505:21) at C:\Users\Work\PhpstormProjects\terminal-app\dist\server.js:129:33 at Generator.next (<anonymous>) at fulfilled (C:\Users\Work\PhpstormProjects\terminal-app\dist\server.js:95:58) at Zone.run (C:\Users\Work\PhpstormProjects\terminal-app\dist\server.js:1633:43) errno: -4058, syscall: 'open', code: 'ENOENT', path: '//indexTemplate.html.tpl' } Error: ENOENT: no such file or directory, open '//indexTemplate.html.tpl' at Object.openSync (fs.js:438:3) at Object.readFileSync (fs.js:343:35) at Object.generateHTML (C:\Users\Work\PhpstormProjects\terminal-app\dist\server.js:80659:16) at Function.setupExpress (C:\Users\Work\PhpstormProjects\terminal-app\dist\server.js:79512:39) at Function.setup (C:\Users\Work\PhpstormProjects\terminal-app\dist\server.js:79505:21) at C:\Users\Work\PhpstormProjects\terminal-app\dist\server.js:129:33 at Generator.next (<anonymous>) at fulfilled (C:\Users\Work\PhpstormProjects\terminal-app\dist\server.js:95:58) at ZoneDelegate.invoke (C:\Users\Work\PhpstormProjects\terminal-app\dist\server.js:1874:26) at Zone.run (C:\Users\Work\PhpstormProjects\terminal-app\dist\server.js:1633:43)我已经在nestjs/swagger repo中将其作为bug提交,因为从我所看到的情况来看,这主要是由于swagger而发生的。我没有注意到纯Angular 8+上的bug。尽管如此,是否有任何解决方法的线索?
发布于 2019-09-06 00:56:44
默认情况下,Webpack将__dirname变量mocking到/。
您可以通过禁用此功能来更改它。
// webpack.config.js
module.exports = {
...
node: {
'__dirname': false
}
}发布于 2019-12-27 15:13:53
在你的webpack.config.js上试试这个
node: {
__dirname: true,
__filename: true, <-- in case of need
},https://stackoverflow.com/questions/57803746
复制相似问题