我正在嘗試將我的打字稿檔案轉換為我的 github 操作管道上的 javascript 檔案。我正在使用帶有打字稿的 Node.js/Express.js。
問題
CI 停留在步驟“安裝依賴項并將打字稿轉換為 javascript ”。看起來它有效,因為我可以看到 console.log() ,但 CI 不會完成。這是為什么?
這是我的 package.json:
npm run convert將 typescript 轉換為 javascript 檔案到backend-build 檔案夾中。在后端,建立檔案夾包含轉換后的js檔案。在后端-build檔案夾,因為它們被編譯從檔案未在倉庫跟蹤NPM運行轉換(即神器)。
每當我啟動我的服務器時,我都會運行它。
{
"name": "backend",
"version": "1.0.0",
"description": "",
"main": "backend-build/index.js",
"scripts": {
"tsc": "tsc",
"convert:build": "tsc -w",
"convert:run": "nodemon backend-build/index.js",
"convert": "concurrently npm:convert:*",
"start": " node backend-build/index.js",
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "",
"license": "ISC",
"devDependencies": {
"concurrently": "^5.3.0"
},
"dependencies": {
"@types/cors": "^2.8.8",
"@types/dotenv": "^8.2.0",
"@types/express": "^4.17.8",
"@types/pg": "^7.14.7",
"backblaze-b2": "^1.7.0",
"cors": "^2.8.5",
"dotenv": "^8.6.0",
"express": "^4.17.1",
"multer": "^1.4.3",
"nodemon": "^2.0.6",
"pg": "^8.5.1",
"typescript": "^4.0.5"
}
}
這是我的打字稿檔案(index.ts):
import express from "express";
import dotenv from "dotenv";
import cors from "cors";
if (process.env.NODE_ENV !== "production") {
dotenv.config();
}
const app = express();
// middleware for parsing bodies from URL
app.use(express.urlencoded({ extended: true }));
app.use(express.json());
app.use(cors({ origin: true, credentials: true }));
console.log("NODE ENV", process.env.privateKey);
app.use("/api/test", (req, res) => {
res.send("hi");
});
const port = process.env.PORT || 5000;
app.listen(port, () => {
console.log(`App running on port ${port}.`);
});
這是我用于 Github 操作的 main.yml:
name: Deploy
on:
push:
branches:
- main
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2 #deploys to heroku
- uses: akhileshns/[email protected] # This is the action
with:
heroku_api_key: ${{secrets.HEROKU_API_KEY}}
heroku_app_name: "app" #Must be unique in Heroku
heroku_email: "a.com"
- name: install dependencies & convert typescript to javascript
run: |
npm install
npm run convert
CI的輸出/問題(卡在這一步)
Run npm install
npm install
npm run convert
shell: /usr/bin/bash -e {0}
npm WARN read-shrinkwrap This version of npm is compatible with lockfileVersion@1, but package-lock.json was generated for lockfileVersion@2. I'll try to do my best with it!
> [email protected] postinstall /home/runner/work/gh_actions_heroku_backend/gh_actions_heroku_backend/node_modules/nodemon
> node bin/postinstall || exit 0
npm WARN [email protected] No description
npm WARN [email protected] No repository field.
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: [email protected] (node_modules/fsevents):
npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for [email protected]: wanted {"os":"darwin","arch":"any"} (current: {"os":"linux","arch":"x64"})
added 294 packages from 222 contributors and audited 296 packages in 27.56s
22 packages are looking for funding
run `npm fund` for details
found 4 moderate severity vulnerabilities
run `npm audit fix` to fix them, or `npm audit` for details
> [email protected] convert /home/runner/work/gh_actions_heroku_backend/gh_actions_heroku_backend
> concurrently npm:convert:*
[convert:build]
[convert:build] > [email protected] convert:build /home/runner/work/gh_actions_heroku_backend/gh_actions_heroku_backend
[convert:build] > tsc -w
[convert:build]
[convert:run]
[convert:run] > [email protected] convert:run /home/runner/work/gh_actions_heroku_backend/gh_actions_heroku_backend
[convert:run] > nodemon backend-build/index.js
[convert:run]
[convert:run] [nodemon] 2.0.15
[convert:run] [nodemon] to restart at any time, enter `rs`
[convert:run] [nodemon] watching path(s): *.*
[convert:run] [nodemon] watching extensions: js,mjs,json
[convert:run] [nodemon] starting `node backend-build/index.js backend-build/index.js`
[convert:run] internal/modules/cjs/loader.js:905
[convert:run] throw err;
[convert:run] ^
[convert:run]
[convert:run] Error: Cannot find module '/home/runner/work/gh_actions_heroku_backend/gh_actions_heroku_backend/backend-build/index.js'
[convert:run] at Function.Module._resolveFilename (internal/modules/cjs/loader.js:902:15)
[convert:run] at Function.Module._load (internal/modules/cjs/loader.js:746:27)
[convert:run] at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:76:12)
[convert:run] at internal/main/run_main_module.js:17:47 {
[convert:run] code: 'MODULE_NOT_FOUND',
[convert:run] requireStack: []
[convert:run] }
[convert:run] [nodemon] app crashed - waiting for file changes before starting...
[convert:build] c3:28:10 AM - Starting compilation in watch mode...
[convert:build]
[convert:build]
[convert:build] 3:28:12 AM - Found 0 errors. Watching for file changes.
[convert:run] [nodemon] restarting due to changes...
[convert:run] [nodemon] starting `node backend-build/index.js backend-build/index.js`
[convert:run] NODE ENV undefined
[convert:run] App running on port 5000.
使用的資源:https : //docs.github.com/en/actions/advanced-guides/storing-workflow-data-as-artifacts
uj5u.com熱心網友回復:
由于 -w(觀察)指令,該作業保持“開放”狀態。您不想在 CI 作業中使用 watch ,除非您也在做一些事情來終止被監視的行程。
錯誤表明您的路徑不正確,因此它正在嘗試運行tsc -w,然后在給定的路徑 ( ./gh_actions_heroku_backend/gh_actions_heroku_backend) 中找不到任何內容,然后由于 watch 指令而保持“打開”狀態。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/359485.html
