我是新手,尝试在 Node.js 应用程序中执行 C# 代码,我在本地使用 edge.js 并使用以下代码:
var formRoute =require("./routes/formRoute")
const session = require("express-session");
const express = require('express');
const bodyParser = require("body-parser");
var app = express();
app.set("view engine", "ejs")
app.use(bodyParser.urlencoded({extended: true}))
const Item = require('./class/Item') //IMPORT ITEM LA CLASSE CHE USO PER SCRIVERE SU DB
const pool = require('./database')
var {getItem,getItems,addItem,getItem2,updateDiscount,loadScript,updateScript,checkIfPresent} = require('./dbDataManager') //IMPORT DI TUTTE LE FUNZIONI NECESSARIE
require("dotenv").config();
var scriptF = require('./ScriptDll/myScript')
var edge = require('edge-js')
var dllFunc = edge.func(
{
source: function (){/*
using System;
using System.Threading.Tasks;
using System.Linq;
public class Number
{
public Number(int num)
{
_Number = num;
}
public int _Number {get;set;}
}
public class Startup
{
public async Task<object> Invoke(dynamic input)
{
return new Number(input.num);
}
}
*/}
}
)
app.get('/dllTest',(req,res)=> {
var typeJson = {num:req.body.number}
let updateType = dllFunc(typeJson,function (error,result){
if (error) throw error;
console.log(result||error)
})
res.send(updateType)
})
这工作正常,但是当我使用 DockerFile 和 docker-compose 启动容器时 我收到以下错误..
docker 文件是:`
> FROM node:22
>
>
> WORKDIR /app
>
>
> COPY package*.json ./
>
> RUN npm install
>
>
> COPY . /app
>
> EXPOSE 3308
>
> CMD ["node","index.js"]`
还有这个 DockerCompose :`
services:
appnode:
image: nodeimage
build:
context: ./ScontiNodeApp
dockerfile: Dockerfile
container_name: nodeappcont
ports:
- "3308:3308"
volumes:
- /DockerSave:/app/DockerData`
所以我不知道是否可以在容器内使用相同的代码。 我只是尝试了不同的方法,但对我来说没有任何效果。
重点是在 Node.js 应用程序中运行 C# 代码。
根据您的错误,您需要将 .NET SDK 安装到容器中。您可以尝试按照 Microsoft 的说明进行操作。
node:22
似乎基于 Debian Bookworm,因此您可以尝试 this(请注意,edge-js 目前将 .NET 8 列为最高支持版本,尽管理论上它也可能适用于最新的 .NET 9 ):
FROM node:22
RUN wget https://packages.microsoft.com/config/debian/12/packages-microsoft-prod.deb -O packages-microsoft-prod.deb
RUN dpkg -i packages-microsoft-prod.deb
RUN rm packages-microsoft-prod.deb
RUN apt-get update && \
apt-get install -y dotnet-sdk-8.0
WORKDIR /app
# the rest
如果这对您不起作用,请尝试此处提到的方法之一。
或者,您可以使用 .NET SDK 映像并将 Node 安装到其中。