我正在为一个简单的web express应用程序运行webpack 4当我在开发环境中运行服务器时(通过nodemon),它运行得很完美,但当我进入生产环境时,我得到了这个奇怪的错误(由firestore行生成)
第一个月
我不明白为什么它在根目录(/)而不是dist目录中查找package.json。
这是我的webpack.js.js文件:
// webpack.config.js
const path = require('path')
const webpack = require('webpack') // to access built-in plugins
// const nodeExternals = require('webpack-node-externals')
const CopyWebpackPlugin = require('copy-webpack-plugin')
const config = {
mode: 'production',
target: 'node',
entry: './lib/index.js',
// externals: [nodeExternals()], // in order to ignore all modules in node_modules folder
output: {
path: path.resolve(__dirname, 'dist'),
filename: 'app.js',
},
module: {
rules: [
{
test: /\.js$/,
exclude: /(node_modules)/,
use: {
loader: "babel-loader"
}
},
{
enforce: 'pre',
test: /\.js$/,
exclude: /(node_modules)/,
loader: 'eslint-loader'
},
{
test: /\.txt$/,
exclude: /(node_modules)/,
use: 'raw-loader'
}
]
},
plugins: [
new CopyWebpackPlugin([{ from: './lib/assets/lastest.txt' }, { from: './package.json' }]),
new webpack.DefinePlugin({
'process.env.NODE_ENV': '"production"'
}),
]
}
module.exports = config
字符串
我在文档中看到了对Resolvers的引用,但默认情况下,它正在寻找package.json,所以.
2条答案
按热度按时间ttvkxqim1#
刚刚解决了一个类似的问题:
**One.**在
webpack.config.js
中设置别名,如下所示:字符串
**二.**通知TS/JS编译器模块别名,例如
jsconfig.json
:型
**(可选)**不使用
require('module-alias/register')
?这在Webpack v5中不起作用。相反,手动挂钩到module-alias
:型
请让我知道它是如何去为你。
nwnhqdif2#
这个问题来自于gRPC(firebase/firestore的依赖项)的问题,它在Windows上很难从node-pre-gyp(它的依赖项)中找到绑定。所以不要像这样导入Firebase:
字符串
你需要通过创建一个App Shell来导入firebase,使用脚本标记,如下所示:
型
使用此解决方案,您可以将这些脚本缓存到用户的浏览器中。但是,这将导致用户首次进入您的网站时加载时间增加。除此之外,网站实际上应该运行得一样快(甚至可能更快)。您甚至不需要创建外部API要访问数据库,您可以执行一个简单的
firebase.firestore()...get()
,但在尝试类似操作之前,请确保您的用户在其缓存中安装了Firebase,否则您将收到一个错误,说明firebase.firestore()
不是一个函数。