【问题标题】:No such file directory when compile solidity with node fs library使用node fs库编译solidity时没有这样的文件目录
【发布时间】:2021-11-20 10:35:44
【问题描述】:

我正在尝试使用node compile.js 编译solidity。我附上了以下代码:

这是我的简单演示结构:

合同

  • node_modules
  • 编译.js
  • Incrementer.sol
  • package.json
  • package-lock.json

这里是compile.js

const fs = require('fs');
const solc = require('solc');

const path = require('path');

// Get Path and Load Contract
const inboxPath = path.resolve(__dirname, 'Incrementer.sol');
console.log(inboxPath) // This one provide directory to read (/Users/amstriker/Desktop/Sdax/OnePlace/contracts/Incrementer.sol'
const source = fs.readFileSync(inboxPath, 'utf8'); // still getting stuck on this

// Compile Contract
const input = {
   language: 'Solidity',
   sources: {
      'Incrementer.sol': {
         content: source,
      },
   },
   settings: {
      outputSelection: {
         '*': {
            '*': ['*'],
         },
      },
   },
};
const tempFile = JSON.parse(solc.compile(JSON.stringify(input)));
const contractFile = tempFile.contracts['Incrementer.sol']['Incrementer'];

// Export Contract Data
module.exports = contractFile;

Incrementer.sol:

pragma solidity ^0.8.0;

contract Incrementer {
    uint256 public number;

    constructor(uint256 _initialNumber) {
        number = _initialNumber;
    }

    function increment(uint256 _value) public {
        number = number + _value;
    }

    function reset() public {
        number = 0;
    }
}

Packages.json

{
  "dependencies": {
    "solc": "^0.8.0",
    "web3": "^1.5.3"
  }
}

我尝试了许多不同的方法,但仍然出现错误:

internal/fs/utils.js:314
throw err;
^

Error: ENOENT: no such file or directory, open 

'/Users/amstriker/Desktop/Sdax/OnePlace/contracts/Incrementer.sol'
    at Object.openSync (fs.js:498:3)
    at Object.readFileSync (fs.js:394:35)
    at Object.<anonymous> (/Users/amstriker/Desktop/Sdax/OnePlace/contracts/compile.js:7:19)
    at Module._compile (internal/modules/cjs/loader.js:1072:14)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:1101:10)
    at Module.load (internal/modules/cjs/loader.js:937:32)
    at Function.Module._load (internal/modules/cjs/loader.js:778:12)
    at Module.require (internal/modules/cjs/loader.js:961:19)
    at require (internal/modules/cjs/helpers.js:92:18)
    at Object.<anonymous> (/Users/steven/Desktop/Sdax/OnePlace/contracts/get.js:2:17)
    at Module._compile (internal/modules/cjs/loader.js:1072:14)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:1101:10)
    at Module.load (internal/modules/cjs/loader.js:937:32)
    at Function.Module._load (internal/modules/cjs/loader.js:778:12)
    at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:76:12)
    at internal/main/run_main_module.js:17:47 {
  errno: -2,
  syscall: 'open',
  code: 'ENOENT',
  path: '/Users/amstriker/Desktop/Sdax/OnePlace/contracts/Incrementer.sol'
}

任何帮助将不胜感激!!。

【问题讨论】:

    标签: javascript node.js solidity smartcontracts web3js


    【解决方案1】:

    由于空间稳定性文件名( Incrementer.sol)而失败。我从 Incrementer.sol 更改为Incrementer.sol 后它工作正常。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-12-04
      • 2016-03-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多