我想在我的 dev 和 prod env 上都有當前的提交哈希,它可以通過/version路徑獲取。
我的 webpack 配置:
//webpack.config.js
...
const commitHash = require('child_process').execSync('cd .. && git rev-parse --short HEAD', {encoding: 'utf8'}).trim();
module.exports = {
mode: 'production',
target: 'node',
...
plugins: [
new webpack.DefinePlugin({
'COMMIT_HASH': commitHash,
})
]
};
我的 nodejs 服務器:
//server.js
...
fastify.get('/version', function (request, reply) {
const version = process.env.NODE_ENV === "dev" ?
require('child_process').execSync('cd .. && git rev-parse --short HEAD', {encoding: 'utf8'}).trim() : COMMIT_HASH;
reply.send(version);
})
...
我的問題是,當我用 webpack 構建它時,我得到了SyntaxError: Identifier directly after number和
server.js from Terser plugin
Invalid syntax: 3511a4a [webpack://./server.js:214,104]
其中第 214 行是require('child_process')....
但
如果我將 webpack 配置更改為const commitHash = 'a3511a4a';一切正常并且構建成功。如果我將其更改為const commitHash = '3511a4a';錯誤再次出現。
Webpack 版本是 5.64.2
uj5u.com熱心網友回復:
因為插件會直接替換文本,所以給它的值必須在字串本身內包含實際的引號。通常,這是使用備用引號(例如 '"3511a4a"')或使用 JSON.stringify('3511a4a') 完成的。
參考:https : //webpack.js.org/plugins/define-plugin/
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/379566.html
