Webpack 网页第4页-can';t在生产模式下查找/package.json
我正在为一个简单的web express应用程序运行webpack4 当我在开发环境中运行服务器(通过nodemon)时,它运行得非常完美,但当我进入生产环境时,我会遇到这个奇怪的错误(由firestore生产线生成)Webpack 网页第4页-can';t在生产模式下查找/package.json,webpack,google-cloud-firestore,webpack-4,Webpack,Google Cloud Firestore,Webpack 4,我正在为一个简单的web express应用程序运行webpack4 当我在开发环境中运行服务器(通过nodemon)时,它运行得非常完美,但当我进入生产环境时,我会遇到这个奇怪的错误(由firestore生产线生成) 错误:package.json不存在于/package.json 我不明白为什么它在根(/)目录而不是dist目录中查找package.json 这是我的webpack.config.js文件: // webpack.config.js const path = require
错误:package.json不存在于/package.json
我不明白为什么它在根(/)目录而不是dist目录中查找package.json
这是我的webpack.config.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
你知道我遗漏了什么吗?
我在文档中看到了对解析器的引用,但默认情况下,它在查找package.json,所以…问题来自gRPC(firebase/firestore的依赖项)的问题,它在Windows上很难从节点pre-gyp(它的依赖项)找到绑定。因此,不要像这样导入Firebase:
import firebase from 'firebase/app';
<script src="https://www.gstatic.com/firebasejs/5.10.0/firebase-app.js" />
<script src="https://www.gstatic.com/firebasejs/5.10.0/firebase-firestore.js" />
您需要通过创建应用程序外壳来导入firebase,并使用以下脚本标记:
import firebase from 'firebase/app';
<script src="https://www.gstatic.com/firebasejs/5.10.0/firebase-app.js" />
<script src="https://www.gstatic.com/firebasejs/5.10.0/firebase-firestore.js" />
使用此解决方法,您可以将这些脚本缓存到用户的浏览器中。但是,这只会导致用户首次进入网站时加载时间增加。除此之外,网站的运行速度也应该一样快(甚至更快)。您甚至不需要费心创建一个外部API(除非您希望这样做)。要访问您的数据库,您可以执行一个简单的
firebase.firestore()…get()
,但在尝试类似操作之前,请确保您的用户已在其缓存中安装了firebase,否则您将收到一个错误,指出firebase.firestore()
不是函数。有相同的问题,您解决了吗?