回答編集履歴
2
記述ミスによるレイアウト崩れを修正
test
CHANGED
@@ -134,7 +134,9 @@
|
|
134
134
|
|
135
135
|
そのデフォルトターゲットの式がこちら
|
136
136
|
|
137
|
-
`
|
137
|
+
`${target.platform}-${target.arch}-${target.version}`
|
138
|
+
|
139
|
+
JSではバッククォートでテンプレートリテラルが使えますが、その中身です。
|
138
140
|
|
139
141
|
|
140
142
|
|
1
おまけ追加
test
CHANGED
@@ -59,3 +59,123 @@
|
|
59
59
|
4系はBetaですが現行の3系最新バージョンは`v3.3.7`みたいです。
|
60
60
|
|
61
61
|
上記インストールしているものを全て削除して、`v3.3.7`のバージョンでやり直して見てください。
|
62
|
+
|
63
|
+
|
64
|
+
|
65
|
+
---
|
66
|
+
|
67
|
+
|
68
|
+
|
69
|
+
【追記】 Nexeのソースコードを読んできました
|
70
|
+
|
71
|
+
|
72
|
+
|
73
|
+
何で存在しないバージョンのバイナリを探しにいくのかを調査してきました。
|
74
|
+
|
75
|
+
それはターゲットの指定が雑な作りになっている事が原因のようです。
|
76
|
+
|
77
|
+
|
78
|
+
|
79
|
+
ソースコードの流れ
|
80
|
+
|
81
|
+
|
82
|
+
|
83
|
+
- [package.json](https://github.com/nexe/nexe/blob/v3.3.7/package.json#L28): `"main": "index.js",`
|
84
|
+
|
85
|
+
- [index.js](https://github.com/nexe/nexe/blob/v3.3.7/index.js#L12): `nexe.compile(argv).catch((error) => {`
|
86
|
+
|
87
|
+
- [src/nexe.ts](https://github.com/nexe/nexe/blob/master/src/nexe.ts#L23): `options = normalizeOptions(compilerOptions)`
|
88
|
+
|
89
|
+
- [src/options.ts](https://github.com/nexe/nexe/blob/master/src/options.ts#L247): `options.targets.push(getTarget())`
|
90
|
+
|
91
|
+
- [src/targets.ts](https://github.com/nexe/nexe/blob/master/src/target.ts#L70)
|
92
|
+
|
93
|
+
|
94
|
+
|
95
|
+
```ts
|
96
|
+
|
97
|
+
export function getTarget(target: string | Partial<NexeTarget> = ''): NexeTarget {
|
98
|
+
|
99
|
+
const currentArch = process.arch
|
100
|
+
|
101
|
+
let arch = currentArch in prettyArch ? prettyArch[process.arch] : (process.arch as NodeArch),
|
102
|
+
|
103
|
+
platform = prettyPlatform[process.platform],
|
104
|
+
|
105
|
+
version = process.version.slice(1)
|
106
|
+
|
107
|
+
|
108
|
+
|
109
|
+
if (typeof target !== 'string') {
|
110
|
+
|
111
|
+
target = `${target.platform}-${target.arch}-${target.version}`
|
112
|
+
|
113
|
+
}
|
114
|
+
|
115
|
+
```
|
116
|
+
|
117
|
+
|
118
|
+
|
119
|
+
これがデフォルトのターゲットです。
|
120
|
+
|
121
|
+
|
122
|
+
|
123
|
+
ざっくりと解説すると、
|
124
|
+
|
125
|
+
[READMEのOptions](https://github.com/nexe/nexe#nexeoptions)の項目に[ターゲット指定](https://github.com/nexe/nexe#target-string--object)があります。
|
126
|
+
|
127
|
+
何のOS・CPUに対して実行ファイルを作るかなんて対象が分からないと何も出来ませんから、
|
128
|
+
|
129
|
+
ここが無記入の場合、現在起動しているマシンの情報を使って作る仕様になっているようですね。
|
130
|
+
|
131
|
+
(まぁそれが自然だわな)
|
132
|
+
|
133
|
+
|
134
|
+
|
135
|
+
そのデフォルトターゲットの式がこちら
|
136
|
+
|
137
|
+
`target = `${target.platform}-${target.arch}-${target.version}``
|
138
|
+
|
139
|
+
|
140
|
+
|
141
|
+
- [process.platform](https://nodejs.org/api/process.html#process_process_platform)
|
142
|
+
|
143
|
+
- [process.arch](https://nodejs.org/api/process.html#process_process_arch)
|
144
|
+
|
145
|
+
- [process.version](https://nodejs.org/api/process.html#process_process_version)
|
146
|
+
|
147
|
+
|
148
|
+
|
149
|
+
これにprettyXxxの関数をかぶせて補正しているようですが、
|
150
|
+
|
151
|
+
現在のOS・CPU・Node.jsのバージョンを利用して実行ファイルをこしらえてくるようです。
|
152
|
+
|
153
|
+
|
154
|
+
|
155
|
+
ところがNode.jsはご存知のようにバージョン番号がころっころ変わるので、
|
156
|
+
|
157
|
+
星の数程バイナリを用意してある必要がるのですが、
|
158
|
+
|
159
|
+
結果はご覧の有様だよ!という感じです。
|
160
|
+
|
161
|
+
|
162
|
+
|
163
|
+
まぁ、Node.jsの元ネタのJSが機能閲覧出来たWebサイトが
|
164
|
+
|
165
|
+
JSエンジン更新でエラー出るようになったという事は許されないので、
|
166
|
+
|
167
|
+
下位互換周りはかなり強いのでちょっと古いバージョンでも良いので指定すれば良いと思います。
|
168
|
+
|
169
|
+
|
170
|
+
|
171
|
+
[リリースノートのv3.3.3](https://github.com/nexe/nexe/releases/tag/v3.3.3)に書いてある最新のバイナリを取ってきて
|
172
|
+
|
173
|
+
`nexe -t windows-x86-14.15.3`
|
174
|
+
|
175
|
+
こんな感じにすれば先に進めるんじゃないですかね?
|
176
|
+
|
177
|
+
|
178
|
+
|
179
|
+
ダメなら該当のNode.jsのバージョンをどうにか連れてきて進める感じになるでしょう。
|
180
|
+
|
181
|
+
Dockerとかに任せた方が良いかもわからんね
|